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





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする