|
マクロですが、とりあえず手元で、
$$replyto = dllfuncstr("CurrentHeader", "Reply-To");
if( strstr( $$replyto, "@maruo.co.jp" ) < 0 ) {
return;
}
の所(2つある)をコメントアウトして、
//$$replyto = dllfuncstr("CurrentHeader", "Reply-To");
//if( strstr( $$replyto, "@maruo.co.jp" ) < 0 ) {
// return;
//}
のようにしたら、少なくとも連絡いただいたサンプルメールの書き換えには成功し
ました。
同じ箇所が2つあるので、両方とも削除またはコメントアウトしないといけないで
す。
どうでしょうか。
Message-Idの書き換えは成功すると思いますが、もしReferences:の書き換えがう
まくいかない場合は、スレッド的につながる2通のメールのサンプルか、出来ればも
っと50〜100通くらいメールを「添付ファイルとして転送」で"maruo@mitene.or.
jp"宛てに送ってほしいです。それでこちらで動作確認できると思います。
----------------------------------------------------------------------------
--------------
//hidesoftフォーラムおよびturukameフォーラムから配信されたメールにmessage-id
ヘッダを付けるマクロ。
loaddll "tkinfo.dll";
#n = dllfunc("AutoRestoreFindPack");
question "このマクロは現在選択してるフォルダの中のすべてのメールについて、
hidesoftフォーラムまたはturukameフォーラムのMessage-Id:ヘッダおよびReference
s:ヘッダ書き換えを行います。実行してもいいですか?";
if( result != yes ) {
endmacro;
}
#count = dllfunc("MailCount");
if( #count == 0 ) {
endmacro;
}
#n = dllfunc("SetThreadView", 0); //一覧表示にする。
#n = dllfunc("SetSortMethod", 3); //Date:ヘッダ順にする。
question "最初にMessage-Idを書き換えます。";
if( result != yes ) {
endmacro;
}
#i = 0;
while( #i < #count) {
#n = dllfunc("SetMailIndex", #i);
call SetMessageId;
#i = #i + 1;
}
question "References:ヘッダを書き換えます。";
if( result != yes ) {
endmacro;
}
#i = 0;
while( #i < #count) {
#n = dllfunc("SetMailIndex", #i);
call SetReferences;
#i = #i + 1;
}
message "終了";
endmacro;
SetMessageId:
//$$replyto = dllfuncstr("CurrentHeader", "Reply-To");
//if( strstr( $$replyto, "@maruo.co.jp" ) < 0 ) {
// return;
//}
##x = 0;
$$subject = dllfuncstr("CurrentHeader", "Subject");
if( leftstr($$subject, 9) == "hidesoft."
|| leftstr($$subject, 9) == "turukame." ) {
//OK
} else {
return;
}
##councilNo = val( midstr( $$subject, 9 ) );
if( ##councilNo <= 0 ) {
return;
}
##x = strstr( $$subject, ":" );
if( ##x < 0 ) {
return;
}
$$speechNo = midstr( $$subject, ##x + 1, 5 );
//message str(##councilNo) + " - " + $$speechNo;
$$date = dllfuncstr("FormatDate", dllfuncstr("CurrentHeader", "Date"), "
YYMMDD" );
//message $$date;
$$messageid = "<" + leftstr($$subject, 8) + "_" + str(##councilNo) + "_"
+ $$speechNo + "_" + $$date + "@maruo.co.jp>";
$$prev = dllfuncstr("CurrentHeader", "Message-Id");
if( $$prev == $$messageid ) {
return;
}
if( $$prev != "" ) {
question "既存のMessage-IDが想定してるのと違います。書き換えますか?\n"
+ "既存のMessage-Id: " + $$prev + "\n"
+ "正しいMessage-Id: " + $$messageid;
if( result == no ) {
return;
}
}
##n = dllfunc("BeginEditMail", 0, 0);
##n = dllfunc("SetHeader", "Message-Id", $$messageid);
##n = dllfunc("SaveEditMail", 0, 0);
return;
SetReferences:
//$$replyto = dllfuncstr("CurrentHeader", "Reply-To");
//if( strstr( $$replyto, "@maruo.co.jp" ) < 0 ) {
// return;
//}
##x = 0;
$$subject = dllfuncstr("CurrentHeader", "Subject");
if( leftstr($$subject, 9) == "hidesoft."
|| leftstr($$subject, 9) == "turukame." ) {
//OK
} else {
return;
}
##councilNo = val( midstr( $$subject, 9 ) );
if( ##councilNo <= 0 ) {
return;
}
##x = strstr( $$subject, ":" );
if( ##x < 0 ) {
return;
}
$$speechNo = midstr( $$subject, ##x + 1, 5 );
##speechNo = val($$speechNo);
$$re = midstr( $$subject, ##x + 1 + 5, 5 );
if( $$re != "| RE " ) {
//返信メールじゃない
return;
}
$$rootNo = midstr( $$subject, ##x + 1 + 5 + 5, 5 );
##rootNo = val($$rootNo);
if( ##rootNo <= 0
|| ##rootNo >= ##speechNo ) {
//おかしい
return;
}
$$find = leftstr($$subject, 9) + str(##councilNo) + ":" + $$rootNo + "|";
##index = dllfunc("MailIndex");
##n = dllfunc("SetFindPack", "(\"" + $$find + "\", target=subject), hili
ght=0" );
##n = dllfunc("FindUp");
if( ##n == 0 ) {
//返信元見つからず
##n = dllfunc("SetMailIndex", ##index); //元のメールに戻す。
return;
}
$$rootid = dllfuncstr("CurrentHeader", "Message-Id" );
##n = dllfunc("SetMailIndex", ##index); //元のメールに戻す。
$$prev = dllfuncstr("CurrentHeader", "References");
if( $$prev == $$rootid ) {
return;
}
if( $$prev != "" ) {
question "既存のReferences:ヘッダが想定してるのと違います。書き換え
ますか?\n"
+ "既存のReferences: " + $$prev + "\n"
+ "正しいReferences: " + $$rootid;
if( result == no ) {
return;
}
}
##n = dllfunc("BeginEditMail", 0, 0);
##n = dllfunc("SetHeader", "References", $$rootid);
##n = dllfunc("SetHeader", "In-Reply-To", $$rootid);
##n = dllfunc("SaveEditMail", 0, 0);
return;
|
|