BエンコードしたMIMEヘッダの取得 (module)Jcode_mime_encode

back
Jcode モジュールの mime_encode を使う。
もちろん MIME::Base64 も必要

----
use Jcode;
$str = "Subject: 日本語のサブジェクト しかも長いヤツはうまいことエンコードしなくてはならない";

$j = new Jcode ($str);
print $j->mime_encode;
----

結果
Subject: =?ISO-2022-JP?B?GyRCRnxLXDhsJE4lNSVWJTglJyUvJUgbKEIgGyRCJDcbKEI=?=
 =?ISO-2022-JP?B?GyRCJCskYkQ5JCQlZCVEJE8kJiReJCQkMyRIJSglcyUzITwlSSQ3GyhC?=

エンコード対象の文字列は、自動的に iso-2022-jp へ変換され、76 文字毎にエンコードされる。

エンコード対象文字列の先頭部分に "Subject: " などのヘッダが含まれておらず、
エンコードした後にヘッダ文字列を付加したい場合は、76文字よりもヘッダ文字列長分
短い文字列長になるようにエンコードする必要があるが、その場合は mime_encode の
第2引数にエンコード後の文字列長を指定すればよい
(複数行にわたるとき、2行目以降が狂うけど:p)

----
$str = "日本語のサブジェクト しかも長いヤツはうまいことエンコードしなくてはならない";

$j = new Jcode;
print "Subject: ", $j->set(\$str)->mime_encode("\n", 67);
----
※ 第1引数は改行のためのコード。デフォルト \n
   67 は、76 から "Subject: " の文字列長 9 を引いた値

back