PHP5で日本語のメールを送る

PHP4からPHP5へ移行していて、send_mail()ではまったので、メモしておく。

まず、これまでのコードはこんな感じ。

send_mail(“宛先”, “件名”, $body, $name, $address);

  • 宛先はメールアドレス
  • 件名は普通に日本語(スクリプト自体はEUCなのでそれ)
  • $bodyはEUCのはず
  • $nameはEUCで、氏名
  • $address は、メールアドレス

第4、5引数は、こう書いておくとFromヘッダを適当に作ってくれていた。

今後は、以下みたいのをスクリプトの先頭付近に書く。

mb_language(“Japanese”);
mb_internal_encoding(“EUC-JP”);

php.iniに書けるらしいけど、個別に書く方が無難だろう。

僕はスクリプトをEUC-JPで書いていて、内部でも文字列をEUC-JPで扱っているのでこう書いたけど、今時書き始めるならUTF-8のがいいかも。

次に、メールの本文をISO-2022-JPに変換しないといけない様子。

$body = mb_convert_encoding($body, “ISO-2022-JP”);

そして、メールの送り方はこんな感じで。

mb_send_mail(“宛先”, “件名”, $body);

件名はよしなに扱ってくれているので、そのままで。

第4引数にオプションのヘッダ(Fromなど)を渡せるけど、ちゃんとした形で渡さないといけない様子。
今回のスクリプトは、そこまでの必要性は無かったので、ここは捨てちゃった。

# 間違いがあれば教えて下さい > 識者 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です