• ベストアンサー

mail関数を使った際の文字コーディングについて

はじめまして mail関数を使った際の文字コーディングについてお伺いしたいのですが、 国際化バージョンではないPHP(バージョンは詳しく分かりません。4以上だと思います)の場合、 どのようにすれば日本語が文字化けしないで正しく送ることが出来るのでしょうか? なお、php.ini設定ファイルはいじることが出来ません。 よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • Rayderl
  • ベストアンサー率83% (40/48)
回答No.4

すみません、メールヘッダについても説明しておくべきでしたね。 まず、メールヘッダには次の行を追加してください(mail関数のadditional_header引数で)。これをきちんと指定していないと、メーラによっては文字化けします。 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit メールの件名が化けるのは、おそらくMIMEエンコードしていないからでしょう。次のページのMIMEメッセージ・ヘッダの説明を参考にしてください。 ■インターネットでの日本語メール http://www.kanzaki.com/docs/jis-mail.html つまり、変数 $jistext にJISコードに変換したテキストが入っているとすると、次のようにエンコードしたものをSubject:行に指定すれば文字化けしません。   "=?iso-2022-jp?B?" . base64_encode($jistext) . "?=" 送信者名などヘッダ部分に日本語を使いたい場合は、すべて上記と同様にMIMEエンコードする必要があります。

raoh199907
質問者

お礼

参考になりました。 本当にありがとうございます。 どうにか解決することが出来ました(^_^) それにしてもメール送信は厄介な作業ですね

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

phpで使えないならnkfなどをsystem系の関数(shell_execとか)で実行して やることは可能でしょうか? まぁそもそも日本語がつかえない環境で日本語を送り出したいという 状況にむりがありそうなので、やるなら英語の文書にするのが 妥当だと思いますけど・・・

  • Rayderl
  • ベストアンサー率83% (40/48)
回答No.2

次のサイトでmbstringが使えない環境で漢字コード変換をするためのモジュールが配布されているので、ご参考にどうぞ。 ■PHP SAMPLES & TIPS http://www.spencernetwork.org/ これでJIS変換して送れば良いでしょう。

raoh199907
質問者

補足

紹介していただいたモジュールでほぼ解決しました。 ただメールの件名の部分のみどの文字コードを使ってもうまくいきません

noname#97996
noname#97996
回答No.1

はじめまして。 単純にメールが文字化けせずに送れればいいのでしょうか? で、あるなら mb_send_mail こちらを使ってみてはいかがでしょうか? http://jp2.php.net/mb_send_mail こちらを参考にしてみてください… こんなのでよかったでしょうか…?

raoh199907
質問者

補足

>ANo.1様 回答ありがとうございます 記入し忘れたのですがマルチバイト関数 は使えない環境なのです。

関連するQ&A