|
> To:xxx@xxx.yy,xxx@xxx.yy,xxx@xxx.yy,xxx@zzz.yy
>
> のように、@xxx.yyでない@zzz.yyが含まれた場合は、メッセージを出してほしい
> です。
すみません。最初の話を忘れてました。
メールアドレスを1つ1つ正確に判断する作戦でないと無理そうな気がするの
で、その例を書かせていただきます。Subjectの判定をする部分も含めて全部書
いてみます。
--------------------------------------------------------------------
loaddll "tkinfo.dll";
$subject = dllfuncstr("CurrentHeader", "Subject");
if( strstr( $subject, "テスト" ) < 0 ) {
// 件名に"テスト"を含まない場合はそのままマクロ終了。
endmacro;
}
$to = dllfuncstr("CurrentHeader", "To");
#count = dllfunc("CountEmailList", $to);
#i = 0;
#found = 0;
while( #i < #count ) {
$email = dllfuncstr("GetEmailList", $to, #i);
$email = dllfuncstr("SetEmailOnly", $email);
$email = dllfuncstr("ToLower", $email);
$domain = midstr( $email, strstr($email,"@") );
if( $domain != "@xxx.yy" ) {
#found = 1;
break;
}
#i = #i + 1;
}
if( #found == 0 ) {
//宛先が@xxx.yyのみならマクロ終了。
endmacro;
}
#n = dllfunc("Bypass_MessageBox", hidemaruhandle(0)
, "件名に「テスト」を含んでいて、宛先に@xxx.yy以外" +
"のメールアドレスが存在します。中止ボタンを押して" +
"宛先を確認してください。"
, "宛先確認マクロの警告メッセージ"
, 0x10 + 2 );
if( #n == 5 ) {
//無視ボタンを押した場合
question "警告を無視して送信してもかまいませんか?\n" +
"(最終確認)";
if( result != yes ) {
#n = dllfunc("SetCancel", 1);
}
endmacro;
}
// 中断 / 再試行ボタンを押した場合
#n = dllfunc("SetCancel", 1);
endmacro;
--------------------------------------------------------------------
という感じでどうでしょうか。
dllfunc/dllfuncstrで呼び出してる関数については、「ヘルプ」メニューの
「秀丸メール・マクロヘルプ」の方に意味が書いてあるので、それが参考になる
と思います。
あと、前回の話にあった
To: aaa
To: bbb
To: ccc
のような書き方をされてる場合対応するなら、上記マクロの
$to = dllfuncstr("CurrentHeader", "To");
の所を
$to = dllfuncstr("CurrentHeaderUnited", "To");
にすればいいです。(ただし秀丸メールはV6.16β以上でないとダメ)
|
|