| |
いくつか案を書かせていただきます。
■1.日本語英語併用作戦
単純に、From:ヘッダの名前に日本語と英語の両方表記作戦があるかとは思います。
From: "斉藤秀夫 (Hideo Saito)" <xxxxx@maruo.co.jp>
みたいにするのがよくある作戦かなぁと思います。
■2.振り分け+テンプレートで切り替える作戦
まず、「設定 - テンプレート/署名の編集」で、新規メール用/返信メール用などそれぞれに英語用のテンプレートも作っておきます。
例えば
$(SetHeader,From,"Hideo Saito <xxxxx@maruo.co.jp>")$-
みたいな命令を埋め込んでテンプレートを用意しておきます。そして、外国の組織から届くメールはそれ用のフォルダに振り分けるようにします。
例えば「テスラ」ってフォルダを作って、@tesla.comからのメールは全部そこに行くようにするとかです。
その「テスト」フォルダを選択して「設定 - フォルダ毎の設定...」の「テンプレート/署名」ページで、先ほど作成したテンプレートを指定する作戦になります。
■3.英語なら英語表記にする作戦
マクロでやるとしたら、ですが、簡単な方法として、メールの件名+本文が全部英語(日本語の文字含まない)ならFrom:ヘッダを書き換える作戦があります。
マクロの例としては、
loaddll "tkinfo.dll";
$subject = dllfuncstr("CurrentHeader", "Subject");
$body = gettext( 0, 0, 0, 9999 );
$total = $subject + "\n" + $body;
loaddll "hmjre.dll";
#n = dllfunc("FindRegular", @"[\x81\x40-\xFC\xFF]", $total, 0);
if( #n < 0 ) {
loaddll "tkinfo.dll";
#n = dllfunc("SetHeader", "From", "Hideo Saito <maruo@mitene.or.jp>");
}
みたいな割と簡単なマクロになります。こういうマクロを「マクロ - マクロ登録...」の「自動起動」ページの「あとで送信/今すぐ送信時」に登録しておく作戦があります。
■4.ご要望の作戦
ご要望通りの作戦ってことになると、マクロがかなり大変で、正直ある程度プログラミング能力が必要になると思うんですが、一応、サンプルは作ってみました。それを改良してなんとかしてみるといいかなぁと思います。
サンプルは以下の通りです。JavaScriptとかならAIチャットに質問するとなんでも教えてくれるんですが、秀丸マクロについてはAIチャットはあんまりうまく教えてくれないです。
loaddll "tkinfo.dll";
$home = dllfuncstr("HomeDir");
$filename = $home + "EnglishDomains.txt";
if( !existfile( $filename ) ) {
message "秀丸メールのデータ用フォルダにEnglishDomains.txtファイルを作成してから実行してください。";
endmacro;
}
$domainlist = dllfuncstr("LoadStringFromFile", $filename);
$domainlist = dllfuncstr("ToLower", $domainlist);
$emaillist = dllfuncstr("CurrentHeaderUnited", "To") + "," + dllfuncstr("CurrentHeaderUnited", "Cc") + "," + dllfuncstr("CurrentHeaderUnited", "Bcc");
#count = dllfunc("CountEmailList", $emaillist);
#i = 0;
while( #i < #count ) {
$email = dllfuncstr("GetEmailList", $emaillist, #i);
$email = dllfuncstr("SetEmailOnly", $email);
$email = dllfuncstr("ToLower", $email);
#x = strstr( $email, "@" );
if( #x >= 0 ) {
$domain = midstr($email, #x + 1);
Label_TryFindDomainAgain: ;
#x = -1;
while(1) {
#x = strstr( $domainlist, $domain, #x + 1 );
if( #x < 0 ) {
break;
}
if( (#x == 0 || ascii( midstr( $domainlist, #x - 1, 1 ) ) < ' ' )
&& ascii( midstr( $domainlist, #x + strlen($domain), 1 ) ) < ' ' ) {
message "From:の名前を英語にします。";
#n = dllfunc("SetHeader", "From", "Hideo Saito <maruo@mitene.or.jp>");
endmacro;
}
}
#x = strstr( $domain, "." );
if( #x >= 0 ) {
$domain = midstr( $domain, #x + 1 );
goto Label_TryFindDomainAgain;
}
}
#i = #i + 1;
}
|
|