|
まず、内部的なコマンドとして、以下のコマンドがあります。
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); //リモー
トメール実行
}
|
|