削除したらサーバーから削除No.19351
gym2004 さん 04/08/08 21:12
 
最近、Outlook Expressから鶴亀メールに乗り換えました。
大方満足なのですが、1つだけOEではできたのに、鶴亀ではできないことがあり悩ん
でいます。
まず、メールの受信時にはすべてサーバーに残す設定にしておきます。
受信メールのうち、メーラー(OEや鶴亀)で削除したものは、サーバーからも削除した
いのですが、鶴亀にはその設定が見つかりません。どこにこのための設定項目がある
のでしょうか。

[ ]
RE:19351 削除したらサーバーから削除No.19352
秀まるお2 さん 04/08/08 22:36
 
 残念ながら、そのオプション相当の物は鶴亀メールにはありません。

 「リモートメール・現在メールの削除」というのはあるので、しいて同じよう
なことをするとしたら、ゴミ箱フォルダを選択してから「編集・すべて選択」を
実行、その後そのコマンドを実行するという手はあります。

[ ]
RE:19352 削除したらサーバーから削除No.19355
gym2004 さん 04/08/09 17:59
 
ご回答ありがとうございます。

> 残念ながら、そのオプション相当の物は鶴亀メールにはありません。
そうですか。残念です。

> 「リモートメール・現在メールの削除」というのはあるので、しいて同じよう
>なことをするとしたら、ゴミ箱フォルダを選択してから「編集・すべて選択」を
>実行、その後そのコマンドを実行するという手はあります。
鶴亀を終了したら、自動的にゴミ箱の中身を削除する設定にしているのですが、この
方法だと自動的に削除しちゃまずいですね。
あるいは、ゴミ箱の中のメールをすべて選択し、「リモートメール・現在メールの削
除」を実行するマクロを作っておき、鶴亀の終了時にそのマクロを自動実行させれば
同じことができますが、鶴亀の終了時に特定のマクロを動かすことはできるのでしょ
うか。

[ ]
RE:19355 削除したらサーバーから削除No.19361
秀まるお2 さん 04/08/10 16:01
 
> 同じことができますが、鶴亀の終了時に特定のマクロを動かすことはできるのでしょ
> うか。

 出来ます。「マクロ・マクロ登録...」の「自動起動」の所に、「鶴亀メール
終了時」というのがありまして、そこでマクロ自動実行が指示できます。

 特定アカウントのゴミ箱フォルダのみを対象にしてってことなら、例えば以下
のようなマクロを作ればいいです。

 "XXXアカウント"の所には、適当なアカウント名を入れてください。

    loaddll "tkinfo.dll";
    $a = dllfuncstr("CurrentAccount");
    $f = dllfuncstr("CurrentFolder");
    #n = dllfunc("SelectFolder", "XXXアカウント", "ゴミ箱" );
    #n = sendmessage( hidemaruhandle(0), 0x0111, 40008, 0);
    #n = sendmessage( hidemaruhandle(0), 0x0111, 40211, 0);
    #n = dllfunc("SelectFolder", $a, $f);

[ ]
RE:19361 削除したらサーバーから削除No.19371
gym2004 さん 04/08/11 13:53
 
ありがとうございます。
現在、複数のメール・アカウントを使用しており、それぞれ別のフォルダに分けてい
ます。それらすべのアカウントに対して、すべて同じようにゴミ箱内のメールを削除
すると同時に、対応するサーバーのメールも削除するにはどうしたらよいですか?
私はプログラミングは、アセンブラ/C++/Pascalなど言語を問わず人並み以上にでき
るつもりですが、鶴亀マクロのリファレンスをこれから調べるのに時間がかかりそう
で。
ちなみに、sendmessageを使っていますが、鶴亀はマクロコマンドをメッセージIDで
定義しているのですか? 秀丸のマクロはいくつか作ったことがありますが、普通にマ
クロコマンドがあったと思うのですが。例えば、DeleteMailとか、DeleteRemoteMail
といったコマンドがあると分かりやすいのですが。これから自分でも調べてみます。


[ ]
RE:19371 削除したらサーバーから削除No.19372
秀まるお2 さん 04/08/11 14:20
 
 全アカウントで実行するなら、以下のようになります。ただ、一発で削除する
動作にはならないので、実用にならないかもしれません。

    loaddll "tkinfo.dll";
    $a = dllfuncstr("CurrentAccount");
    $f = dllfuncstr("CurrentFolder");
    #i = 0;
    while(1) {
        $a2 = dllfuncstr("Account", #i);
        message $a2;
        if( $a2 == "" ) break;
        #n = dllfunc("SelectFolder", $a2, "ゴミ箱" );
        if( dllfunc("MailCount") != 0 ) {
            #n = sendmessage( hidemaruhandle(0), 0x0111, 40008, 0);
            #n = sendmessage( hidemaruhandle(0), 0x0111, 40211, 0);
        }
        #i = #i + 1;
    }
    #n = dllfunc("SelectFolder", $a, $f);
    endmacro;

 なんとかその「削除したらサーバーからも削除」に対応したいと思いますが…。
Message-Idで比較する方式でよければ何とか対応できそうな気もします。方式を
考えます。

[ ]
RE:19371 削除したらサーバーから削除No.19373
秀まるお2 さん 04/08/11 14:29
 
> ちなみに、sendmessageを使っていますが、鶴亀はマクロコマンドをメッセージIDで
> 定義しているのですか?

 鶴亀メール上でのマクロは、実は秀丸マクロとまったく同じです。秀丸マクロ
から鶴亀メールを制御するためにtkinfo.dllがありまして、普通はそのDLLを
loaddllしてからdllfunc/dllfuncstr関数で制御する形になります。

 ただ、鶴亀メールの各種コマンドすべてが関数として用意されてる訳じゃない
ので、関数として用意されてない物は、sendmessageを使って無理矢理実行する
形になってしまいます。詳しくはヘルプにも書いてはあるんですが、1つ1つの
コマンドコードが何番になるかは書いてないので、それについては、例えば
VisualC++に付属のSpy++を使うとか、作者に直接聞いていただく必要があります。

[ ]
RE:19372 削除したらサーバーから削除No.19374
秀まるお2 さん 04/08/11 14:37
 
 やっぱり、その「削除したらサーバーから削除」って動作も対応したいと思い
ます。

 削除した時に、削除されたメールのMessage-IdからUIDL文字列を特定して、そ
れをファイルに覚えておくようにしておいて、次回の受信動作のタイミングでそ
の対象メールを削除するようにします。

 Message-Idを使っての処理なので完璧にという訳にはいかないと思いますが…。

 とにかくそういうオプション追加します。

[ ]
RE:19374 削除したらサーバーから削除No.19375
秀まるお2 さん 04/08/11 15:06
 
>  Message-Idを使っての処理なので完璧にという訳にはいかないと思いますが…。

 やっぱり、「削除したらサーバーからも削除」オプションをONにしたら、「ア
カウント毎の設定・メールサーバー・詳細・トラブル対策」の「UIDL文字列をX-
TuruKame-UIDL:ヘッダを使って保存する」オプションを自動でONにするようにし
ます。それでプログラムが非常にシンプルになります。

[ ]
RE:19374 削除したらサーバーから削除No.19376
山田健一 さん 04/08/11 15:20
 
  秀まるお2 さん、こんにちは。

> Message-Idを使っての処理なので完璧にという訳にはいかないと思いますが…。

 うまく行かなかったときはメッセージなどが欲しいですね。消したつもりが消
えてなくてメールボックスオーバーフローというのも困りますので。。。


山田健一@鶴亀ユーザー
 http://homepage3.nifty.com/yamada_ken1/
ココログ http://yamada-ken1.cocolog-nifty.com/yamada_ken1/
上伊那ミニバスケットボール連盟
http://www.ina.janis.or.jp/~ken1yama/KAMIINA_MINI/index.htm

[ ]
RE:19375 削除したらサーバーから削除No.19377
gym2004 さん 04/08/11 15:57
 
少しの間にたくさんコメントをいただいたみたいで、ありがとうございます。
私としては、「削除したらサーバーからも削除」オプションが最もありがたいので、
これを待ちたいと思います。
よろしくお願いします。

[ ]
RE:19376 削除したらサーバーから削除No.19381
秀まるお2 さん 04/08/11 21:46
 
 Message-Idを使うのはやめてUIDLを使うことにしようと思いますが、どっちに
しても、リモートメールの削除に失敗するケースは考えられます。そういうケー
スで、いちいちエラーメッセージを出すのは、個人的にはやりすぎだと思います。

>  消したつもりが消
> えてなくてメールボックスオーバーフローというのも困りますので。。。

 以前から思っていたことですけど、メールボックスのオーバーフローが心配だ
ってことで言うなら、そもそも現状の「受信したメールをサーバー上に残す」が
ONの時には、その辺の容量チェックは何も機能しません。なので、今現在でも、
メールボックスの容量については人間的にチェックするしか手がありません。

 しいて、そういう心配がどうこうと言うことならば、そういう容量チェックの
ような機能を別に用意すべきだと思いますが、今のところ、そういう容量チェッ
クをするメールソフトを見たことがありません。

[ ]
RE:19381 削除したらサーバーから削除No.19382
gym2004 さん 04/08/11 22:22
 
> Message-Idを使うのはやめてUIDLを使うことにしようと思いますが、どっちに
>しても、リモートメールの削除に失敗するケースは考えられます。
Outlook Expressでも、失敗しているときが結構ありました。
でもそれはそれでOKです。

[ ]
RE:19381 削除したらサーバーから削除No.19620
gym2004 さん 04/08/27 20:57
 
早速対応していただけたようで、使ってみました。
ところが、鶴亀で削除したメールをサーバーでは削除できていないようです。削除に
失敗するメールがあるのではなく、1つも削除できていないようです。
バージョンは3.66。「鶴亀メール終了時にゴミ箱を空にする」をONにしています。

[ ]
RE:19620 削除したらサーバーから削除No.19625
秀まるお2 さん 04/08/28 00:10
 
 僕の作った機能は、メールを削除してから次に受信動作をしたらサーバー上か
ら消えるってことになるので、つまり、鶴亀メール終了時にゴミ箱を空にしたと
したら、次回鶴亀メールを起動して受信動作した時にやっとメールがサーバー上
からも消えることになりますが…。

 そういう話じゃないですかね?

 メールを削除(あるいはゴミ箱を空に)した後に、アカウント用のフォルダの
中に「uidl_del.bin」というファイルが生成されてるなら、たしかにサーバー上
のメールを削除するための予約がなされてることになるんですけど。

[ ]
RE:19625 削除したらサーバーから削除No.19631
gym2004 さん 04/08/28 12:42
 
> 僕の作った機能は、メールを削除してから次に受信動作をしたらサーバー上か
>ら消えるってことになるので、つまり、鶴亀メール終了時にゴミ箱を空にしたと
>したら、次回鶴亀メールを起動して受信動作した時にやっとメールがサーバー上
>からも消えることになりますが…。
>
> そういう話じゃないですかね?
そのとおり、次回起動時にサーバーからメールが消えないんです。


>
> メールを削除(あるいはゴミ箱を空に)した後に、アカウント用のフォルダの
>中に「uidl_del.bin」というファイルが生成されてるなら、たしかにサーバー上
>のメールを削除するための予約がなされてることになるんですけど。
今調べてみましたが、UIDL.binはありましたが、uidl_del.binはありませんでした。
もちろん、鶴亀を終了したあと(ゴミ箱のメールが削除されてから)です。「ゴミ箱」
フォルダの中はprop.binだけがありました。

[ ]
RE:19631 削除したらサーバーから削除No.19636
秀まるお2 さん 04/08/28 17:22
 
 すみません。いろいろ調べたら鶴亀メールがバグってました。

 X-TuruKame-UIDL: のヘッダをチェックするつもりがその処理がバグっていて
チェックされてませんでした。ちなみにそのヘッダが無い場合はX-UIDL:ヘッダ
も検索するんですが、それがあればたまたま正常動作してしまいまして、僕のテ
スト環境では、そのX-UIDL:ヘッダにたまたまヒットしてうまく動作してたよう
です。

 次のV3.67β3にて修正させていただきます。ご確認よろしくお願いします。

[ ]