|
そのようなマクロがあったとは知りませんでした。
一応僕も作ってしまったので、せっかくなので書き込んでおきます。
(簡単なテストしかしてませんが)
--------------------------------------------------------------------
loaddll "tkinfo.dll";
if( dllfunc("IsTuruKameMain") ) {
message "メールをエディタで開いてから実行してください。";
endmacro;
}
if( dllfunc("MailType") == 3 ) {
message "受信したメールは処理できません。";
endmacro;
}
question "差し込みメールの処理をしてもいいですか?";
if( result != yes ) {
endmacro;
}
#n = dllfunc("SaveDraft");
$subject = dllfuncstr("CurrentHeader", "Subject");
$from = dllfuncstr("CurrentHeader", "From");
$replyto = dllfuncstr("CurrentHeader", "Reply-To");
$inreplyid = dllfuncstr("CurrentHeader", "In-Reply-To");
$to = "";
call CollectRecipient "To";
call CollectRecipient "Cc";
call CollectRecipient "Bcc";
gofiletop;
beginsel;
gofileend;
copy;
#i = 0;
$to2 = "";
#i = 0;
#c = dllfunc("CountEmailList", $to);
#cRecv = 0;
while( #i < #c ) {
$s = dllfuncstr("GetEmailList", $to, #i);
if( $s != "" ) {
$to2 = $to2 + $s + ", ";
#cRecv = #cRecv + 1;
}
#i = #i + 1;
}
if( #cRecv == 0 ) {
message "宛先が1つもありませんでした。処理を中断します。";
endmacro;
}
$to = leftstr( $to2, strlen($to2) - 2 );
#n = dllfunc("SetHeader", "To"
, "@処理済み差し込みメール@:, " + $to);
#n = dllfunc("SaveDraft");
$date = dllfuncstr("CurrentHeader", "Date");
$messageid = dllfuncstr("CurrentHeader", "Message-Id");
#i = 0;
#handle = hidemaruhandle(0);
while( #i < #cRecv ) {
#n = dllfunc("NewMail");
#n = dllfunc("SetHeader", "Subject", $subject);
#n = dllfunc("SetHeader", "From", $from);
if( dllfuncstr("CurrentHeader", "Reply-To") != $replyto ) {
#n = dllfunc("SetHeader", "Reply-To", $replyto);
}
if( $inreplyid != "" ) {
#n = dllfunc("SetHeader", "In-Reply-To", $inreplyid);
#n = dllfunc("SetHeader", "References:", $inreplyid);
}
$s = dllfuncstr("GetEmailList", $to, #i);
#n = dllfunc("SetHeader", "To", $s);
gofiletop;
beginsel;
gofileend;
delete;
paste;
#n = dllfunc("SendLater");
#handle2 = hidemaruhandle(0);
#n = dllfunc("Sync");
if( #n == 0 ) {
message "内部エラー";
endmacro;
}
#n = dllfunc("SetMainWndTop");
closehidemaruforced #handle2;
#n = dllfunc("BeginEditMail");
#n = dllfunc("SetHeader", "Message-Id", $messageid);
#n = dllfunc("SetHeader", "Date", $date);
#n = dllfunc("SaveEditMail", 0, 0);
setactivehidemaru #handle;
#i = #i + 1;
}
message "差し込みメールを未送信フォルダに生成しました。" +
"現在のメールは手作業にて送信済みフォルダに" +
"移動するなどしてください。";
endmacro;
CollectRecipient:
##i = 0;
##c = dllfunc("CountCurrentHeader", $$1);
while( ##i < ##c ) {
$$one = dllfuncstr("CurrentHeader2", $$1, ##i);
if( $$one != "" ) {
$to = $to + "," + $$one;
}
##i = ##i + 1;
}
##i = 0;
while( ##i < ##c ) {
##n = dllfunc("DeleteHeader2", $$1, ##i);
##i = ##i + 1;
}
return;
|
|