phpでメールを送信する際に、
@mb_language("ja");
@mb_internal_encoding("SJIS");
$send = @mb_send_mail($email,
mb_convert_encoding($subject, "ISO-2022-JP", "SJIS"),
mb_convert_encoding(mb_ereg_replace("\r", "", $mailtext), "ISO-2022-JP", "SJIS"),
$headers);
こんな感じで書いてました。
ほとんどのケースでは問題ないのですが、サブジェクトがある程度長くなると、一部のメーラーでは文字化けが発生する場合があります。原因は、2バイトの文字コードが分断されて別々にエンコーディングされてしまうためでした。
Webなどを調べ確認していくと、mb_convert_encoding関数を使う必要がないことが判明。コードを次のように変更すると、Gmailなどでも文字化けしないようになりました。
@mb_language("ja");
@mb_internal_encoding("SJIS");
$send = @mb_send_mail($email,
$subject,
mb_ereg_replace("\r", "", $mailtext),
$headers);
もともとmail関数でゴリゴリ書いたコードを流用し、安易にmb_send_mail関数に置き換えたのがよくなかったようです。
ちょっと反省。
投稿日:2008年8月14日
- ※コメントは、スパム対策などのためIPアドレスにて制限しております。
- ※誹謗や中傷、スパムなど、不適切な内容は公開いたしません。ご了承ください。