Shuriken+MIME::Entity+「utf8」は注意。「UTF-8」を使おう
スポンサードリンク
perl の CGI で、MIME::Entity を使い、メールヘッダなどを自動生成させて楽ちんメール送信をしていたのですけれども、ちょっとした要望があって、UTF-8 でメール送信するようにって言うことだったんで、そうやって作っていたのですけれども、僕の使っている Mozilla Thunderbird では平気なのに、Shuriken だとバケラッタだというのです。
いろいろ調べた結果、
sub mkmailsubject { my $enc = shift; my $subject_j = shift; my $tmp = ''; $tmp = encode_mimeword($subject_j, 'B', $enc) if $subject_j; return $tmp; }
こんなルーチンなんですが、
$enc = 'utf8'; のとき、
=?UTF8?B?44K344Os44Oz44Gv5YOV44Gr44Gv54Sh55CG44GL44KC44K344Os44Oz?=
これが Shuriken で化けるようです。
$enc = 'UTF-8'; のとき
=?UTF-8?B?44K344Os44Oz44Gv5YOV44Gr44Gv54Sh55CG44GL44KC44K344Os44Oz?=
なって、Shuriken でデコードできます。ていうか、他のメールソフトが、該当部のエンコーディングを強力に解析している予感。
Perl のイディオムで、「utf8」て言うのがあるからついつい使っちゃいがちですが、ちゃんと「UTF-8」ていう文字列を発生させた方がいいですよね。ここの他にも、ヘッダの別の箇所でも
Content-Type: text/plain; Charset=UTF-8
て文字列発生させるのに使いますし。
具体的にはこんなんなります。
my $enc = 'UTF-8'; my $oMime = MIME::Entity->build( Type => 'text/plain', Charset => $enc, Encoding => '8bit', From => $from, To => $to, Cc => $cc, Bcc => $bcc, Subject => mkmailsubject($enc, $subject), Data => $message, );
他に何が指定できるかというのは、
MIME::Entity - class for parsed-and-decoded MIME message - search.cpan.org [search.cpan.org]
参照。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1926
コメントする