リモートメール取得し、不要なメールを削No.48508
zoom さん 15/09/13 16:08
 
リモートメール取得でメールサーバ上のメール一覧を取得し、送信先、題名で不要な
メールを削除するマクロを作りたいです。
リモートメールを実行するまでは分かるのですが、メール一覧の取得方法が分りませ
ん、どなたか教えてください。
作りたいマクロは以下の内容です。

1)全アカウント名の取得
2)最初のアカウントでリモートメールを取得
3)メール一覧から不要なメールを削除
4)不要メール削除後のメール数を取得
5)上記2)〜4)を全てのアカウントで実行
6)全アカウントのメール数を表示

[ ]
RE:48508 リモートメール取得し、不要なメNo.48510
秀まるお2 さん 15/09/13 17:47
 
 まず、内部的なコマンドとして、以下のコマンドがあります。

IDM_REMOTEMAIL_SYNC             40340 // リモートメール一覧の取得(高速)
IDM_REMOTEMAIL_REFRESH          40341   // リモートメール一覧の取得(完全)
IDM_REMOTEMAIL_EXECUTE          40342   // リモートメール実行(削除/ダウン
ロードの実行)
IDM_REMOTEMAIL_WANTDOWNLOAD     40343   // 現在選択してるメールをダウンロー
ド対象とする
IDM_REMOTEMAIL_WANTDELETE       40344   // 現在選択してるメールを削除対象とする


 ですが、問題は、リモートメール一覧のダイアログボックス上ではマクロ実行がい
まいちうまくいかない可能性が高いことです。これを回避するためには、「アカウン
ト毎の設定・上級者向け・その他」の中にある

     □ リモートメール一覧をフォルダとして表示する

 をONにして、リモートメール一覧をあたかも普通のフォルダの1つのように動作さ
せるのがいいです。

 というか、実はそこのオプションをONにせずとも、SelectFolder関数で無理矢理"R
emote"ってフォルダを指定すると、上記オプションをONにしたかのように動作するっ
ていう裏技があります。

 これらを総合してマクロのサンプルを作ってみたのが以下のマクロになります。"h
ideo@maruo.co.jp"からのメールを削除する例になります。

 何か不明な点があれば質問してください。

-------------------------------------------------------

    loaddll "tkinfo.dll";
    #n = dllfunc("SelectFolder", dllfuncstr("CurrentAccount"), "Remote" );
    if( #n == 0 ) {
        message "アカウント毎の設定・上級者向け・その他」の「リモートメール
一覧をフォルダとして表示する」をONにしてからマクロ実行してください。";
        endmacro;
    }
    #n = sendmessage( hidemaruhandle(0), 0x111, 40340, 0 );     //リモート
メール一覧の取得(高速)
    #count = dllfunc("MailCount");
    #i = 0;
    #cWantDelete = 0;
    while( #i < #count ) {
        #n = dllfunc("SetMailIndex", #i);
        $from = dllfuncstr("CurrentHeader", "From");
        $from = dllfuncstr("SetEmailOnly", $from);
        $from = dllfuncstr("ToLower", $from);
        if( $from == "hideo@maruo.co.jp" ) {
            #n = sendmessage( hidemaruhandle(0), 0x111, 40344, 0);      //削
除対象とする
            #cWantDelete = #cWantDelete + 1;
        }
        #i = #i + 1;
    }
    if( #cWantDelete != 0 ) {
        #n = sendmessage( hidemaruhandle(0), 0x111, 40342, 0);      //リモー
トメール実行
    }

[ ]
RE:48510 リモートメール取得し、不要なメNo.48545
zoom さん 15/09/21 09:42
 
ありがとうございます、目的のことができました。

[ ]