新規メール作成時に本文に宛名を入れる方No.29072
ながは さん 06/11/06 13:04
 
ながと申します。

既出だと思うのですが、探し方が悪いのかどうしたらよいのかわからないので、投稿
させていただきます。

題名のとおりですが、新規メールを作成するときに、自動的にメールアドレスから本
文中に宛名を入れるようにしたいと考えています。参照するのは、アドレス帳の備考
欄に登録してある宛名としたいと考えています。

すでに、返信メールはテンプレートをいじりながら、それらしいことができているの
ですが、新規メールのほうが、うまくいきません。どのようにしたらよいか、アドバ
イス頂けますでしょうか?

ちなみに、今のところ新規メール作成のテンプレートは、以下のようにしてあります。

$(AdrBook)$-
$(AddHeader,Bcc,"xxxx@xxxx.xxx")$-
$(SetHeader,X-TuruKame-BccNoAttach,1)$-
ATN :$c
FRM :○○

以上宜しくお願いします。

[ ]
RE:29072 新規メール作成時に本文に宛名をNo.29075
秀まるお2 さん 06/11/06 15:25
 
 FRM: ○○ の所にアドレス帳備考欄の内容を入れたいって話かと思いますが、
テンプレート命令でこういうのを書くならば、

 FRM: $(FindBookNote,$(CurrentHeader,To))

 みたいになります。しかし、To:ヘッダの内容は$(AdrBook)で呼び出して決定
したいとなると、タイミング的にうまくいかないです。(テンプレートが実行さ
れてからアドレス帳が出てくるので)

 なので、しいてなんとかするとしたら、マクロを使うしか無いと思います。

 テンプレートとしては、

   $(ExecMacro,"FindNote.mac")

 みたいなのを入れておいて、FindNote.macでは、

    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeader", "To");
    $note = dllfuncstr("FindBookNote", $to);
    if( $note != "" ) {
        #x = x; #y = y;
        gofiletop;
        replacedown "FRM: ", "FRM: " + $note;
        moveto #x, #y;
    }

 ってな風にすればいいと思います。

[ ]
RE:29075 新規メール作成時に本文に宛名をNo.29078
ながは さん 06/11/06 16:38
 
ながはです。
早速の回答ありがとうございます。

ちょっと、変更してトライしてみましたが、うまくいきません。
実現したいのは、
1)CTRL+Nで新規メール作成開始
2)アドレス帳が、立ち上がり宛先を選択(Toヘッダがセットされる)
3)Toヘッダのアドレスを元に、アドレス帳から該当の備考(具体的には備考3)欄に登
録されている文字列を取得してくる(例えば"○× 様")
4)本文の頭に、”ATN:○× 様"を挿入する

いただいたマクロを若干変更し、テンプレートを以下のようにセットしましたが、ア
ドレス帳も立ち上がりません。

生成された新規メールは、以下のようになってしまいます。

>To:      
>From:     xxxxx@hogehoge.com
>Cc:      
>Bcc:      xxx@hogehoge.com
>Subject:  
>X-TuruKame-BccNoAttach: 1
>
>ATN:
>FRM: 自分の名前
>
>御世話になっております。
>
>
>
>
>
>署名


マクロ=FindNote.mac
>loaddll "tkinfo.dll";
>    $to = dllfuncstr("CurrentHeader", "To");
>    $note = dllfuncstr("FindBookNote3", $to);
>    if( $note != "" ) {
>        #x = x; #y = y;
>        gofiletop;
>        replacedown "ATN: ", "ATN: " + $note;
>        moveto #x, #y;
>    }

テンプレート内容
>$(AdrBook)$-
>$(AddHeader,Bcc,"xxx@hogehoge.com")$-
>$(SetHeader,X-TuruKame-BccNoAttach,1)$-
>ATN: $(ExecMacro,"FindNote.mac")
>FRM: 自分の名前
>
>御世話になっております。
>
>
>


どこをどう直せば、希望どおりの動きになるか教えていただけますでしょうか?

ながは

[ ]
RE:29078 新規メール作成時に本文に宛名をNo.29079
秀まるお2 さん 06/11/06 17:29
 
 すみません。やってみたらたしかにダメでした。というか、$(ExecMacro)を使
うとアドレス帳が出なくなってしまうようです。ということはマクロからアドレ
ス帳を呼び出すしか無いです。

 マクロの先頭のloaddll文の次に、

    #n = dllfunc("AdrBook");

 を入れればうまくいくと思います。あと、テンプレート中の$(AdrBook)は取っ
た方がいいです。

 ということでどうでしょ?


[ ]
RE:29079 新規メール作成時に本文に宛名をNo.29092
ながは さん 06/11/07 14:40
 
ながはです。

秀まるお2様、すばやい対応ありがとうございました。

> ということでどうでしょ?

希望どおりの動作を得ることができました。ありがとうございます。

また、この動作をToヘッダが複数含まれているときにもその全員の宛名が出るように、
拡張するとしたらどのようにしたらよいか、アドバイス頂けますでしょうか?

[ ]
RE:29092 新規メール作成時に本文に宛名をNo.29095
秀まるお2 さん 06/11/07 16:17
 
 複数メールアドレスを処理するには、CountEmailList / GetEmailList関数を
使ってループさせることになります

    $to = dllfuncstr("CurrentHeader", "To");
    #to_count = dllfunc("CountEmailList", $to);
    #i = 0;
    while( #i < #to_count ) {
        $email = dllfuncstr("GetEmailList", $to, #i);
        $note = dllfuncstr("FindBookNote3", $email);
        if( $note != "" ) {
            insert "ATN: " + $note + "\n";
        }
        #i = #i + 1;
    }

 上記のはあくまで例ですが。

 さらにはCc/Bcc:ヘッダについて処理させたい、または複数のTo:ヘッダについ
ても処理させたければ、CurrentHeader関数の代わりにCurrentHeader2関数/
CountCurrentHeader関数を使うなどすることになります。

[ ]
RE:29095 新規メール作成時に本文に宛名をNo.29100
ながは さん 06/11/07 18:52
 
ながはです。秀まるお2様こんにちは。

早速の対応ありがとうございます。

> 複数メールアドレスを処理するには、CountEmailList / GetEmailList関数を
>使ってループさせることになります

送って頂いたマクロを元にマニュアルを参照しながら自分なりのものを作ってみまし
た。

ちなみに、ループとか条件分岐などは、自分にはまだまだレベルの高い話になってし
まうので、完全に力技による対応です。

どうせ、本文中の宛名なので、固有名詞を際限なく並べるということは、ありえない
(少なくとも自分が書くメールでは)ため、ループを使いこなすことをあきらめ、べた
に宛名をひたすら並べるということにしちゃいました。

こんな感じです。非常に原始的ですし、改善の余地はいくらでもありますが、自分の
使用にはそれほど差し支えませんので、これで行きたいと思います。

>loaddll "tkinfo.dll";
>    #n = dllfunc("AdrBook");
>
>    $to = dllfuncstr("CurrentHeader", "To");
>    #to_count = dllfunc("CountEmailList", $to);
>
>     $email[0] = dllfuncstr("GetEmailList", $to, 0);
>     $email[1] = dllfuncstr("GetEmailList", $to, 1);
>     $email[2] = dllfuncstr("GetEmailList", $to, 2);
>     $email[3] = dllfuncstr("GetEmailList", $to, 3);
>     $email[4] = dllfuncstr("GetEmailList", $to, 4);
>     $email[5] = dllfuncstr("GetEmailList", $to, 5);
>
>     $note[0] = dllfuncstr("FindBookNote3", $email[0]);
>     $note[1] = dllfuncstr("FindBookNote3", $email[1]);
>     $note[2] = dllfuncstr("FindBookNote3", $email[2]);
>     $note[3] = dllfuncstr("FindBookNote3", $email[3]);
>     $note[4] = dllfuncstr("FindBookNote3", $email[4]);
>     $note[5] = dllfuncstr("FindBookNote3", $email[5]);
>    
>     moveto 0,0;
>     insert "ATN : " + $note[0] + $note[1] + $note[2] + $note[3] + $note[4]
> + $note[5]

いただいたマクロは原形をとどめておりませんが、コマンドの意味と使い方を理解す
るという意味では、非常に参考になりました。

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


[ ]