|
From:ヘッダにダブルクォーテーション記号か入っているケースはまったく想
定してませんでした。そもそものマクロのバグですみませんでした。
で、その、秀丸メール起動時コマンドラインでの、to=XXXXの中で
ダブルクォーテーション記号そのものを指定する方法ですが、特別な裏技を使わ
ないと指定できないことが分かってしまいました。以下にサンプルマクロを掲載
するので、そのように直してほしいです。
loaddll "tkinfo.dll";
$account = dllfuncstr("CurrentAccount");
$bodyfile = "D:\\Program Files\\TuruKame\\bodyfile.txt";
#n = dllfunc("LockSelection");
while(1) {
#n = dllfunc("EnumSelection", 1);
if( #n == 0 ) break;
$to = dllfuncstr("CurrentHeader", "Reply-To");
if( $to == "" ) {
$to = dllfuncstr("CurrentHeader", "From");
}
if( $to != "" ) {
call UrawazaConv $to;
$to = $$return;
$subject = dllfuncstr("CurrentHeader", "Subject");
$subject = " [受信通知] " + $subject;
call UrawazaConv $subject;
$subject = $$return;
$cmd = "turukame.exe unsentmail "
+ "Account=\"" + $account + "\" "
+ "Subject=" + $subject + " "
+ "To=" + $to + " "
+ "BodyFile=\"" + $bodyfile + "\" ";
$id = dllfuncstr("CurrentHeader", "Message-Id");
if( $id != "" ) {
$cmd = $cmd + " In-Reply-To=\"" + $id
+ "\" References=\"" + $id + "\"";
}
runsync2 $cmd;
}
}
#n = dllfunc("UnlockSelection", 1);
endmacro;
UrawazaConv:
##len = strlen($$1);
##i = 0;
$$ret = "\"\x01";
while( ##i < ##len ) {
$$p = midstr( $$1, ##i, 1 );
##p = ascii($$p);
if( (##p >= 0x81 && ##p <= 0x9F)
|| (##p >= 0xE0 && ##p <= 0xFC) ) {
$$ret = $$ret + midstr( $$1, ##i, 2 );
##i = ##i + 1;
} else if( $$p == "\"" ) {
$$ret = $$ret + "%22";
} else if( $$p == "%" ) {
$$ret = $$ret + "%25";
} else {
$$ret = $$ret + $$p;
}
##i = ##i + 1;
}
$$ret = $$ret + "\"";
return $$ret;
|
|