迷惑メールの自動削除No.21723
ARISO さん 05/02/16 21:13
 
ARISO です。

秀まるおさんの言われたようにしてマクロを

loaddll "tkinfo.dll";
    $a = dllfuncstr("CurrentAccount");
    $f = dllfuncstr("CurrentFolder");
    #n = dllfunc("SelectFolder", "NIFTY", "迷惑メール");
    if( dllfunc("MailCount") != 0 ) {
        #n = sendmessage( hidemaruhandle(0),0x0111,40008,0);
        #n = dllfunc("Delete",1);
    }
    #n = dllfunc("SelectFolder", $a, $f);

として秀丸を入れてあるフォルダーに meiwaku.mac として入れました。

そしたら、そのときカーソルがあるフォルダーのメールが全部削除されてしまい
ました。NIFTY の「迷惑メール」にカーソルを置けばもちろんそれは全部削除さ
れますが、どこのフォルダーでもそうなります。

それでこの「鶴亀メール」の質問と答えが入ったフォルダーの中身も全部なくな
りました。

どこが悪かったのでしょうか。

また、なくなったメールを回復したいのですが、それにはどうしたらいいでしょ
うか。

[ ]
RE:21723 迷惑メールの自動削除No.21724
秀まるお2 さん 05/02/16 21:42
 
 あー、SelectFolder関数が失敗すると、現在フォルダのメールが全部無くなる
んですね。これは大変なことになってしまいました。

 僕もそこまで頭が回りませんで…。大変すみません。あのマクロは危険なので
もう使わないで欲しいです。

> それでこの「鶴亀メール」の質問と答えが入ったフォルダーの中身も全部なくな
> りました。

 「復元」というソフトを使って削除されたファイルを復元することが出来ます
けど、それでどうでしょ?

    http://www.vector.co.jp/soft/win95/util/se192983.html

 または、とりあえず、受信ログに残っている分は復活可能です。「全般的な設
定・フォルダ」の「表示するフォルダ・受信ログフォルダ」をONにすると受信ロ
グフォルダが出てくるので、例えばそこから「検索して一覧作成」で、
"hidesoft.8"のような文字列を検索して、それで出てきたメールをすべて選択し
てからマウス右ボタンメニューの「受信解析のやり直し」をすると復活します。

[ ]
RE:21724 迷惑メールの自動削除No.21725
秀まるお2 さん 05/02/16 22:02
 
 迷惑メール用のフォルダがアカウント直下にある場合なら、

    #n = dllfunc("SelectFolder", "NIFTY", "迷惑メール");

 の所を、

    #n = dllfunc("SelectFolder", "NIFTY", "User\\迷惑メール");

 としないといけないようです。または、受信フォルダ配下にあるなら、

    #n = dllfunc("SelectFolder", "NIFTY", "受信\\迷惑メール");

 です。

 あと、そもそも間違ったフォルダを指定したとしてもメールが無くなってしま
うのはまずいので、たしかに迷惑メールだけを削除するように直してみました。
動作が少々遅くなりますけど、安全のためにはこうすべきでした。

    loaddll "tkinfo.dll";
    $a = dllfuncstr("CurrentAccount");
    $f = dllfuncstr("CurrentFolder");
    #n = dllfunc("SelectFolder", "NIFTY", "User\\迷惑メール");
    if( #n == 0 ) {
        message "フォルダの選択に失敗しました。";
        endmacro;
    }
    #c = dllfunc("MailCount");
    if( #c != 0 ) {
        #i = 0;
        while( #i < #c ) {
            #n = dllfunc("SetMailIndex", #i );
            if( leftstr(
                  dllfuncstr( "CurrentHeader"
                            , "X-TuruKame-Filter" ), 4 )
               == "spam" ) {
                #n = dllfunc("Delete", 1);
                #c = #c - 1;
            } else {
                #i = #i + 1;
            }
        }
    }
    #n = dllfunc("SelectFolder", $a, $f);

[ ]