- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メールフォームが部分的に文字化けする)
メールフォームが部分的に文字化けする
このQ&Aのポイント
- お問い合わせメールフォームを作成しましたが、一部のお客様からのメールが部分的に文字化けします。
- メールフォームはUTF-8でエンコードされており、メール送信の際にJISに変換されています。
- 対応したが納得できなかったお客様からのメールを受信しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
mb_language("Japanese"); mb_internal_encoding("utf-8"); を指定していますからmb_send_mailの第3引数まではphp側がutf-8→iso-2022-jpの変換を行います。なので$bodyを自前でmb_convert_encodingしているのは『余計な処理』です。utf-8として「おかしい」文字はそのままかもしれませんが、utf-8→iso-2022-jpが可能だった部分は変換されてしまいます。 $body = mb_convert_encoding($body, "JIS", "UTF-8"); この処理を外してみてください。 なお第4引数(自動変換の対象外)の$from_nameもmb_encode_mimeheaderを使って $from_name = mb_encode_mimeheader(mb_convert_encoding($from_name, "JIS", "UTF-8")); とすべきです。 #出来れば他のライブラリ(JPHPMailer)を使う方がいいんですが・・・
お礼
返信が遅れ申し訳ありません。 ご教示いただいた修正をして、テストメールを送ってみました。 結果は文字化けしませんでした。 ただ、私の環境では修正前でも文字化けしなかったので、 他の環境で文字化けするか、まだわかりません。 ご回答ありがとうございました。 よろしくお願いします。