「宛先(TO/CC/BCC)に自ドメイン以外を含No.05616
yanagida さん 19/09/25 15:59
 
こんにちは。
秀丸メールのマクロについて質問です。


現在、パスワード付きZIPファイルを添付して送信した際に、
同じ送信先に解凍パスワードを送付するために、
「ZIPの添付ファイルがある場合に同じ送信メールを作成する」
というマクロを登録し、作成された2通目のメールに
に解凍パスワードを記入して送付しています。

この場合、パスワードの有無に関わらず、ZIPファイルが添付された
場合に2通目のメールは自動的に作成されていますが、
パスワードなしの場合は手動でメールを削除しています。


ところが、最近になりメールサーバにて自動パスワード付きZIP化に対応したので
「ZIPの添付ファイルがある場合に同じ送信メールを作成する」
という条件を
「添付ファイルがある場合に同じ送信メールを作成する」
という条件に変更しました。

さらに、メールサーバの自動パスワード付きZIP化の対象は自ドメイン
以外のメールアドレスを含む場合に適用されます。
つまり、メールの宛先が全て自ドメインの場合は自動パスワード付きZIP化
の対象外となり、2通目のメールは不要となります。

しかし、
「添付ファイルがある場合に同じ送信メールを作成する」
という条件にしたため、2通目のメールが自動で作成されてしまいます。
以前もパスワードなしの場合は手動で削除していたので、
今回も手動で削除すればいいのですが、折角なのでマクロに
「宛先(TO/CC/BCC)に自ドメイン以外を含む場合」
という条件を追加したいと思っています。

ちなみに「自ドメイン」というのは
「xxx@aaa.co.jp」の「@aaa.co.jp」が同じである、
という条件になります。



前置きが長くなってしまったのですが、
「宛先(TO/CC/BCC)に自ドメイン以外を含む場合」
というのをマクロで記述するにはどうしたらいいでしょうか?

ヘルプを参照したのですが、
CallByEmailList関数(TKInfo.dll)
は使えそうな感じですが、パラメータ1に指定するのは
独自の関数でいいのかわからず、また検索する関数を
どう記述したらいいかもよく分からない状況です・・・。

---以下の内容はコミュニテックス会議室システムにより付加されました。
本文中のメールアドレスは伏せ字に変換されました。伏せ字にしたくない場合
はメールアドレスを""で囲んで書き込んでください。

[ ]
RE:05616 「宛先(TO/CC/BCC)に自ドメイNo.05619
秀まるお2 さん 19/09/25 17:14
 
> 「宛先(TO/CC/BCC)に自ドメイン以外を含む場合」
> というのをマクロで記述するにはどうしたらいいでしょうか?

 精度が多少悪くてもいいようでしたら、strstrで探す手があります。

    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeaderUnited", "To") + "," + dllfuncstr("Curren
tHeaderUnited", "Cc");
    $to = dllfuncstr("ToLower", $to);
    if( strstr( $to, "@mydomain.co.jp" ) >= 0 ) {
        //自ドメイン含む
        message "自ドメイン含む";
    } else {
        message "自ドメイン含まず";
    }

 みたいな処理になります。ちゃんとやるなら、メールアドレスを1つ1つ取り出し
てループさせないとダメかと思います。以下のようになります。

    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeaderUnited", "To") + "," + dllfuncstr("Curren
tHeaderUnited", "Cc");
    $to = dllfuncstr("ToLower", $to);
    #i = 0;
    #count = dllfunc("CountEmailList", $to);
    #found = 0;
    while( #i < #count ) {
        $email = dllfuncstr("GetEmailList", $to, #i);
        $email = dllfuncstr("SetEmailOnly", $email);
        $email = dllfuncstr("ToLower", $email);
        #x = strstr( $email, "@" );
        if( #x >= 0 ) {
            $domain = midstr( $email, #x + 1 );
            if( $domain == "mydomain.co.jp" ) {
                #found = 1;
                break;
            }
        }
        #i = #i + 1;
    }
    if( #found != 0 ) {
        //自ドメイン含む
        message "自ドメイン含む";
    } else {
        message "自ドメイン含まず";
    }

 こんな感じでどうでしょうか。

[ ]
RE:05619 「宛先(TO/CC/BCC)に自ドメイNo.05657
yanagida さん 19/10/01 11:55
 
返信遅れてすみません。
サンプルコードありがとうございます。

「宛先(TO/CC/BCC)に自ドメイン以外を含む」という条件にしたいので、

if( $domain == "mydomain.co.jp" )

この条件を

if( $domain != "mydomain.co.jp" )

と反転させました。

あと、BCCを判定に追加したかったので、

$to = dllfuncstr("CurrentHeaderUnited", "To") + "," + dllfuncstr("CurrentHea
derUnited", "Cc") + "," + dllfuncstr("CurrentHeaderUnited", "Bcc");

として、所望の動作になってます。

ありがとうございました。


[ ]