プロが教える店舗&オフィスのセキュリティ対策術

はじめまして

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

なお、php.ini設定ファイルはいじることが出来ません。
よろしくお願いします

A 回答 (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エンコードする必要があります。
    • good
    • 0
この回答へのお礼

参考になりました。
本当にありがとうございます。

どうにか解決することが出来ました(^_^)

それにしてもメール送信は厄介な作業ですね

お礼日時:2007/05/30 10:16

phpで使えないならnkfなどをsystem系の関数(shell_execとか)で実行して


やることは可能でしょうか?
まぁそもそも日本語がつかえない環境で日本語を送り出したいという
状況にむりがありそうなので、やるなら英語の文書にするのが
妥当だと思いますけど・・・
    • good
    • 0

次のサイトでmbstringが使えない環境で漢字コード変換をするためのモジュールが配布されているので、ご参考にどうぞ。



■PHP SAMPLES & TIPS
http://www.spencernetwork.org/

これでJIS変換して送れば良いでしょう。

この回答への補足

紹介していただいたモジュールでほぼ解決しました。

ただメールの件名の部分のみどの文字コードを使ってもうまくいきません

補足日時:2007/05/28 16:33
    • good
    • 0

はじめまして。



単純にメールが文字化けせずに送れればいいのでしょうか?
で、あるなら mb_send_mail こちらを使ってみてはいかがでしょうか?

http://jp2.php.net/mb_send_mail

こちらを参考にしてみてください…
こんなのでよかったでしょうか…?

この回答への補足

>ANo.1様
回答ありがとうございます

記入し忘れたのですがマルチバイト関数
は使えない環境なのです。

補足日時:2007/05/25 15:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!