PHPでサイト構築しました。
メールを送るんだけど、まぁこんなカンジ。
抜粋ね。
mb_language('ja');
mb_internal_encoding('UTF-8');
$admin_name = mb_encode_mimeheader($admin_name, 'UTF-8');
$mail_header = "From: ".$admin_name." <".$admin_mail.">\r\n";
$mail_header .= "Content-Type: text/plain; charset=ISO-2022-JP\r\n";
$mail_header .= "Content-Transfer-Encoding: 7bit";
mb_send_mail($mail, $subject, $body, $mail_header);
mb_language()とかmb_internal_encoding()とかは冗長かとは思ったんだけど、改めて指定してみた。
問題は$admin_nameなんだな。
要するに送信者名を日本語で設定したいというので、mb_encode_mimeheader()を使うことになった。
色々とテストしてみると、何故かBecky!だけが化ける。
いくつかのケータイとiphone、Windows Live Mailで試したけど、問題なし。
Becky!だけが問題。
受信メールの一覧、メールのプロパティでは正常に表示されている。
しかしメールを表示する際のミドルバー上の差出人とヘッダ表示ではまともに表示できていない。
試しに返信してみると、宛先の日本語表示は正しい。
色々調べるが、有効な情報は見つからない。
まぁ、Becky!はクセがあるみたいだしなぁ…
じゃ、僕のコードがまずいんだろうなってことで、Content-Typeを消してみたり、Content-Transfer-Encodingを消してみたり色々試したが一向に改善されない。
改めてphpinfo()を確認するが、mb_internal_encodingはUTF-8である。
結論はこれ。
$admin_name = mb_encode_mimeheader($admin_name, 'UTF-8');
ここで指定している'UTF-8'を外すと、Becky!でも正常に表示されました。
$admin_name = mb_encode_mimeheader($admin_name);
$admin_nameで指定している文字コードもUTF-8だし、改めて指定する必要もないかな??
一応Windows Live Mailでも正常に受け取れたし…
なんだったんだろう?
全然ワカラン。
実は根本的なことが判ってないのかも。
0 コメント:
::コメントを投稿する::