メールの自動転送時にsenderのヘッダを変No.23747
あべちん さん 05/08/05 10:42
 
受信したメールを自動転送したいのですが
メールサーバでSenderのヘッダをチェックしているため
自動転送が出来ません
(Sender以外のヘッダ(From等)はチェックなし)

そこで、自動転送する際にSenderのヘッダを
書き換えてから送信したいのですが
メールの振り分けの『そのまま転送』では
Resent-From/Resent-Toヘッダを付加するだけで
その他のヘッダへの更新は行っておりませんよね?

こういう場合は、マクロでないとできないのでしょうか?

マクロにはまだ手をつけていないので
少しハードルが高いのですが...
(ヘッダの更新さえできれば、
 メールの振り分け機能でやりたいことは対応可能なのです)

[ ]
RE:23747 メールの自動転送時にsenderのヘNo.23755
秀まるお2 さん 05/08/05 14:31
 
 振り分けおよび「そのまま転送」ではSender:ヘッダの書き換えは出来ないで
す。マクロを使っていただくしかありません。

 マクロを作るとしたら、「あとで送信/今すぐ送信時」の所に登録しておいて
自動的にメールを改変するような形になろうかと思います。特定アカウントに限
ってってことなら以下のようになります。1行目に目的のアカウント名を入れれ
ばそのまま使えると思います。

---------------------
    $account = "テストアカウント";
    loaddll "tkinfo.dll";
    #count = dllfunc("GetFolderMailCount", $account, "未送信");
    if( #count == 0 ) {
        endmacro;
    }
    #n = dllfunc("SelectFolder", $account, "未送信");
    if( dllfunc("IsThreadView") ) #n = dllfunc("SetThreadView", 0);
    if( dllfunc("ViewArea") != 0 ) #n = dllfunc("SetViewArea", 0 );
    #i = 0;
    while( #i < #count ) {
        #n = dllfunc("SetMailIndex", #i);
        $from = dllfuncstr("CurrentHeader", "Resent-From:");
        if( $from != "" ) {
            $from = dllfuncstr("SetEmailOnly", $from);
            #n = dllfunc("BeginEditMail");
            #n = dllfunc("SetHeader", "Sender:", $from);
            #n = dllfunc("SaveEditMail", 0, 0);
        }
        #i = #i + 1;
    }

[ ]
RE:23755 メールの自動転送時にsenderのヘNo.23807
あべちん さん 05/08/09 13:23
 
マクロのご教示ありがとうございます。

作って頂いたマクロでは送信するメールの全てが
書き換える対象になるのでしょうか?
(”新規作成”等で設定するsenderと同じものを
 設定する予定なので、実害はないと思いますが
 確認させて下さい)

また、今「あとで送信/今すぐ送信時」には
Kazzさん作成のメール送信確認ダイアログ表示マクロ(Kz-TkSend.mac)を
使用しているのですが、これとの共存させるには
どのようにすればいいのでしょうか?

お伺いするばかりですいません...

[ ]
RE:23807 メールの自動転送時にsenderのヘNo.23811
秀まるお2 さん 05/08/09 17:38
 
> 作って頂いたマクロでは送信するメールの全てが
> 書き換える対象になるのでしょうか?

 送信しようとするメールの中で、「Resent-From:」ヘッダを含む物だけが対象
となります。つまり、「そのまま転送」としたメール中のSender:ヘッダだけを
書き換える動作になります。

> また、今「あとで送信/今すぐ送信時」には
> Kazzさん作成のメール送信確認ダイアログ表示マクロ(Kz-TkSend.mac)を
> 使用しているのですが、これとの共存させるには
> どのようにすればいいのでしょうか?

 そのマクロの先頭に、

    execmacro "SenderChange.mac";

 みたいな1文を入れるか、または、別途、

    execmacro "SenderChange.mac";
    execmacro "Kz-TkSend.mac";

 のような2行のマクロを作って、それを「あとで送信/今すぐ送信時」に登録
するのがいいんじゃないかと思います。

 あと1つ忘れてました。実は先日作ったマクロは、「今すぐ送信」には対応し
てないし、仮に「今すぐ送信」をやると誤動作すると思います。

    $account = "テストアカウント";
    loaddll "tkinfo.dll";

 の次に、

    if( !dllfunc("IsTuruKameMain) ) {
        endmacro;
    }

 のような文を入れて欲しいです。(どっちにしても「今すぐ送信」には対応さ
れてませんけど、とりあえずそれでエラーにはならなくなる)

[ ]