『php』でメールを送ると名前が文字化けする!!(T-T)
『php』でメールを送信すると『Outlook Express』などで、
『From: 』の名前が文字化けする。
他は全く文字化けしない…。
何でかなぁ~。(T-T)
原因が全然分からん…。
ただ分かっている事は、『UTF-8』にすると起こる。
『SHIFT-JIS』だと起きない…。
どうやったら対応できるのか?
『Content-Type: text/plain; charset=UTF-8』とかも
入れてみたが変化せず…。
ふてくされて転がってみる…。
ゴロゴロ…。
ゴロゴロ…。
ゴロゴロ…。
ハタと気が付く!
タイトルは、文字化けしていない…。
タイトルを見る。
『$subject = "お問い合わせ";』が
『Subject: =?UTF-8?B?44GK5ZWP44GE5ZCI44KP44Gb?=』となっている。
…
『BASE64』に変換されている。
…
ヘッダーは、『BASE64』で記述しなくてはいけないのかも…。
$from = "From: ".base64_encode($name)." <".$mail.">\n";
と、してみたが駄目だった…。
何かが足りない…。
タイトルを良く見ると…
『=?UTF-8?B?』と『?=』が付加されている。
これが、『UTF-8』コードにしていると言う事らしい。
$from = "From: =?UTF-8?B?".base64_encode($name)."?= <".$mail.">\n";
で、無事名前がきちんと表示されるようになった。
…
タイトルの文字コードは、基本『SHIFT-JIS』しか対応していないのかも?
他の物は、「全て『BASE64』で表記しろや!」って事なのかもしれない。
多分、どこかに書いてあるのかもしれないが…
見つからないので、そう言う事としておこう。
ちなみにこっちの方がメジャーらしい。
$from = "From: ".mb_encode_mimeheader($name)." <".$mail.">\n";
同じように『BASE64』に変換されている。
これからも、悩まされそうだ…。(汗)
| 固定リンク
コメント