From/Toヘッダーのアドレス表示についてNo.24798
koki さん 05/10/26 00:22
 
いつも快適に使用させて頂いております。

メールの一覧表示のアドレス表示では、アドレス帳に登録された名前を表示させるこ
とが「設定」→「全般的な設定」→「メール一覧」のところで設定が可能と思います。

この機能は非常に便利ですが、受信メールや送信済みメールのヘッダー部分のFrom/T
o/Ccヘッダーなどのアドレス部分にも同様にアドレス帳で登録された名前を表示させ
るにはどのように設定すれば可能でしょうか? 現在の機能では不可能でしょうか?

例えば、
From: 770394@abc.co.jp
To  : 660018@abc.co.jp, 751362@abc.co.jp
のようになっているのを、アドレス帳から参照して、

From: 山中四郎 <770394@abc.co.jp>
To  : 山本太郎 <660018@abc.co.jp>, 山下次郎 <751362@abc.co.jp>
のように自動的に表示させたいのですが。

現在会社のメーラーとして使用していますが、社内のメールアドレスが上記のような
適当な番号で設定されているため、ヘッダーを見ても誰からのメールなのか予測がで
きにくく、不便しています(もちろん社内のやり方が悪いのですが)。

よろしくご教示お願い致します。

[ ]
RE:24798 From/Toヘッダーのアドレス表示No.24803
秀まるお2 さん 05/10/26 09:37
 
 マクロを使ってメールを書き換えるやり方であれば可能です。

 メールの中身は書き換えず、あくまで表示だけ変更するというのは出来ないで
す。

 メールの中身を書き換えてもいいのであれば、それはそれでサンプルマクロを
作って差し上げることは簡単に出来ます。

[ ]
RE:24803 From/Toヘッダーのアドレス表示No.24805
koki さん 05/10/26 10:12
 
コメントありがとうございます。

やはりマクロ以外無理ですか・・・
マクロはマクロヘルプに書いてあるレベルのコマンドで作成可能でしょうか? 素人
に近いのでアドレス帳から参照してくるコマンドがよくわからないのですが、FindBo
ok3関数あたりを使えばいいのでしょうか。 できれば簡単なサンプルをご教示いた
だければ助かります。

> マクロを使ってメールを書き換えるやり方であれば可能です。
>
> メールの中身は書き換えず、あくまで表示だけ変更するというのは出来ないで
>す。
>
> メールの中身を書き換えてもいいのであれば、それはそれでサンプルマクロを
>作って差し上げることは簡単に出来ます。

[ ]
RE:24805 From/Toヘッダーのアドレス表示No.24806
秀まるお2 さん 05/10/26 10:53
 
 名前が無い物だけ変換するというサンプルとしては、以下のようになります。
秀丸メール本体ウィンドウ上で変換したい対象のメールを選択して実行するか、
またはエディタで開いてマクロ実行してみてください。

 複数選択して実行すると、選択した複数のメールすべてについて変換します。

    loaddll "tkinfo.dll";
    if( dllfunc("IsTuruKameMain") ) {
        #n = dllfunc("LockSelection");
        while(1) {
            #n = dllfunc("EnumSelection", 1);
            if( #n == 0 ) {
                break;
            }
            #n = dllfunc("BeginEditMail");
            call ConvHeaderByBook;
            if( ##return ) {
                #n = dllfunc("SaveEditMail", 0, 0);
            } else {
                #n = dllfunc("CancelEditMail");
            }
        }
    } else {
        #readonly = readonly;
        if( #readonly ) {
            #n = dllfunc("EnableEdit");
        }
        call ConvHeaderByBook;
        if( #readonly ) {
            if( ##return ) {
                #n = dllfunc("AlterSave");
            }
        }
    }
    endmacro;

ConvHeaderByBook:
    ##to_count = dllfunc("CountCurrentHeader", "To");
    ##cc_count = dllfunc("CountCurrentHeader", "Cc");
    ##i = 0;
    ##conved = 0;
    while( ##i < ##to_count ) {
        $$s = dllfuncstr("CurrentHeader2", "To", ##i);
        call BookChange $$s;
        if( $$return != $$s ) {
            ##n = dllfunc("SetHeader2", "To", $$return, ##i );
            ##conved = 1;
        }
        ##i = ##i + 1;
    }
    ##i = 0;
    while( ##i < ##cc_count ) {
        $$s = dllfuncstr("CurrentHeader2", "Cc", ##i);
        call BookChange $$s;
        if( $$return != $$s ) {
            ##n = dllfunc("SetHeader2", "Cc", $$return, ##i );
            ##conved = 1;
        }
        ##i = ##i + 1;
    }
    return ##conved;

BookChange:
    ##c = dllfunc("CountEmailList", $$1);
    ##i = 0;
    $$result = "";
    while( ##i < ##c ) {
        $$one = dllfuncstr("GetEmailList", $$1, ##i);
        $$name = dllfuncstr("SetNameOnly", $$one);
        $$email = dllfuncstr("SetEmailOnly", $$one);
        if( $$email != "" ) {
            if( $$name == "" || $$name == $$email ) {
                $$name = dllfuncstr("FindBook", $$email);
                if( $$name != "" ) {
                    $$one = $$name + " <" + $$email + ">";
                }
            }
            if( $$result != "" ) {
                $$result = $$result + ", ";
            }
            $$result = $$result + $$one;
        }
        ##i = ##i + 1;
    }
    return $$result;

[ ]
RE:24806 From/Toヘッダーのアドレス表示No.24807
koki さん 05/10/26 11:11
 
早々にこれだけのマクロをご教示いただきありがとうございました!
早速試してみましたが、非常にうまく行きました。
あとはFromヘッダー等も変換されるようアレンジして使用してみます。

本当に助かりました。ありがとうございます。
これで秀丸メールは絶対に手放せなくなりました。

[ ]
RE:24807 From/Toヘッダーのアドレス表示No.24808
秀まるお2 さん 05/10/26 11:24
 
 Fromヘッダのこと忘れてました。

    $$s = dllfuncstr("CurrentHeader", "From");
    call BookChange $$s;
    if( $$return != $$s ) {
        ##n = dllfunc("SetHeader", "From", $$return );
        ##conved = 1;
    }

 って処理を、ConvHeaderByBook関数の最後の「return ##conved;」の直前に入
れればいいです。

[ ]
RE:24808 From/Toヘッダーのアドレス表示No.24809
koki さん 05/10/26 11:42
 
たびたび申し訳ありません。
うまく行きました! ありがとうございます。

[ ]