自動返信メールNo.41529
IOU さん 11/09/19 22:51
 
初めて投稿いたします。

不特定の方から、メールでデータを提出してもらうことになりました。
(人数は約1000人程度の予定です)
先ずは、不在通知のような手法で、データの着信を通知したいと思います。

Outlook Expressでは、<http://www.rescueme.jp/support/faq/00432.html>
のような方法で設定できるようですが、秀丸メールでも可能でしょうか?

とりとめのない質問で恐縮ですが、よろしくお願いいたします。


[ ]
RE:41529 自動返信メールNo.41531
秀まるお2 さん 11/09/20 10:23
 
 秀丸メールの場合はマクロを使わないと出来ないです。

 暗黙に、すべてのメールに自動返信させるなら、例えばマクロとしては、

    loaddll "tkinfo.dll";
    while( dllfunc("SelectRecvMail") ) {
        #n = dllfunc("MakeReplyCustom", "Single", "", "");
        #n = dllfunc("SwitchTemplate", "自動返信テンプレート");
        #n = dllfunc("SendLater");
        #handle = hidemaruhandle(0);
        #n = dllfunc("SetMainWndTop");
        closehidemaruforced #handle;
    }

 のようなマクロを作って、それを「マクロ・マクロ登録...」の「自動起動」
ページの「受信が一段落した時」に登録しておいて、あとは定期受信をONにしつ
つ、定期受信の動作を「送受信」にしておけばいいです。返信メールの内容は、
上記マクロ例だと、"自動返信テンプレート"という名前で返信用テンプレートを
用意しておく形になります。


 ただ、それを一般のメールアカウントでやってしまうと、例えば迷惑メールだ
ろうがなんだろうがすべてのメールに自動で返信してしまうので、自分自身が迷
惑メールの発信元になって外部のメールサーバーから遮断される対象として
マークされてしまう可能性があります。そういうリスクを承知でとにかく全部自
動で返信してしまうんだ、ということでしたら上記のマクロでもいいと思います。

 それともう1つ、返信メールの無限ループ対策も考えないとダメかもしれませ
ん。自分が自動返信したメールに対して相手も自動返信すると、自動返信が無限
に続くことになります。下手すると無限返信が増殖していってもっとひどいこと
になる可能性もあります。それを防ぐためには、

    loaddll "tkinfo.dll";
    while( dllfunc("SelectRecvMail") ) {
        if( dllfuncstr("CurrentHeader", "Precedence:") != "" ) {
            #n = dllfunc("MakeReplyCustom", "Single", "", "");
            #n = dllfunc("SwitchTemplate", "自動返信テンプレート");
            #n = dllfunc("SetHeader", "Precedence:", "bulk");
            #n = dllfunc("SendLater");
            #handle = hidemaruhandle(0);
            #n = dllfunc("SetMainWndTop");
            closehidemaruforced #handle;
        }
    }

 のように、Precedence:ヘッダを確認して返信するようにしたらいいかと思い
ます。ただ、これでも100%防げる訳ではありません。

 特定条件のメールについてだけ自動返信するようにするのが一番いいんじゃな
いかと思います。が、その場合は、特定条件のメールをどこかのフォルダに振り
分けるようにした上で、

    while( dllfunc("SelectRecvMail") ) {

 の所を

    #n = dllfunc("SelectFolder", "対象アカウント名", "対象フォルダ名");
    while( dllfunc("SelectRecvMailInFolder") ) {

 のようにしたらいいかと思います。

 マクロやtkinfo.dllの関数について勉強していただかないと難しいのですけど
も、一応「可能かどうか」という意味では、上記のような例で可能ではあります。

[ ]
RE:41531 自動返信メールNo.41539
IOU さん 11/09/21 12:59
 
さっそくのご教示ありがとうございます。
すべてのメールに対する自動返信は確認できました。
できれば、添付ファイル名を加えた返信文にしたいと思います。
マクロはあまり使った事がないのですが、これを機会にトライしてみます。
どうもありがとうございました。

[ ]
RE:41539 自動返信メールNo.41540
秀まるお2 さん 11/09/21 13:28
 
 添付ファイル・ファイル名が1つだけなら、

   $(RootHeader,X-Attach)

 でファイル名が取得可能ではあります。ただし、フォルダ名の一部も付いてし
まいますけども。

 ちゃんとしたファイル名だけ取り出すにはマクロの手助けが必要になります。
例えばテンプレートの方では

     --filename--

 と書いておくようにしておいて、マクロで、

    $attach = dllfuncstr("RootHeader", "X-Attach");
    if( $attach == "" ) {
        $attach = "(添付ファイル無し)";
    } else {
        $attach = midstr( $attach, strrstr($attach,"\\") + 1 );
    }
    replaceallfast "--filename--", $attach;

 とかすると、テンプレートの中の「--filename--」と書いた部分が添付
ファイル・ファイル名に置き換わります。

[ ]