Perlで作成したメールの件名が文字化けする問題に対応しました

  • 投稿日:
  • カテゴリ:

メールソフトにより、Check4Lifeからの自動配信メールの
件名が文字化けする問題がありました。

14040501.jpg

例えば、iPhoneでは問題ないのですが、
macのメールソフトでは件名が
「$B$3$l$O!"%_%C%7%g%s$NAw?.(B」
のようになってしまいます。
先日登録してくれた友人のAndroidスマホでもおかしかったようです。

いろいろ調べてみると解決策がたくさん載っていましたが、
そのままではうまく行かずに、結果的にはえらい時間が(^^;;)
キモとなる掲載を見つけ、ようやく解決できました。

私の具体的な対策内容は次の通りです。

  • メールの件名のデータを、MIME::Base64のencode_base64でエンコードする。
  • そのエンコードデータの前に"=?ISO-2022-JP?B?"を、後ろに"?="をつける。
  • encode_base64の第二引数に何も入れないと、76バイト毎に改行で区切られるので、Nullを入れておく。

Perlソフトに追加したコードです。
use MIME::Base64;
$mail_subject = "=?ISO-2022-JP?B?" . encode_base64($mail_subject,'') . "?=";

次に届くミッション、価値観、目標、大切な言葉のメールから、正しく表示されるはずです。

ネットに情報を公開してくださった方々に感謝!