phpの標準関数であるmb_send_mail()を使う場合の注意点です。標準で実装されていることから初心者が最初に作るメールフォームではmb_send_mailが多用されるようです。

#本来はPHPMailerなどのライブラリを使う方がベター

大事なのは、mb_languagemb_internal_encodingをキッチリ(正しく)書くこと

mb_languageとmb_internal_encodingさえちゃんと指定していれば、あとはほとんどの部分を自動的にやってくれます。自前で余計なことをしないように要注意です。

mb_languageが"ja"の場合はISO-2022-JP、"uni"の場合はUTF-8のメールが作成されます。

普段はほとんど意識しない(意識しなくても問題がない)mb_internal_encodingですが、mb_send_mailを使うときだけはちゃんと指定します。mb_internal_encodingで指定された文字セットからメールの文字セット(前述のとおりmb_languageの値に従ってISO-2022-JPもしくはUTF-8)に変換されます。

変換対象は第一引数から第三引数まで。つまり件名や本文は何も考えなくていいわけです。逆に言えば第四引数で自分でメールヘッダに何か指定するときには日本語の扱いには注意しないといけません。Fromヘッダにメールアドレスだけでなく自分の名前を入れたいという場合にはmb_encode_mimeheaderする必要があります。

なおmb_encode_mimeheaderも第二引数を省略した場合にはmb_languageの値を参照しますし、mb_internal_encodingからの変換も自動的にやってくれます(これも自前で変換したりするとおかしなことになります)。
関連する記事
コメント
コメントする