• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メールフォームが部分的に文字化けする)

メールフォームが部分的に文字化けする

このQ&Aのポイント
  • お問い合わせメールフォームを作成しましたが、一部のお客様からのメールが部分的に文字化けします。
  • メールフォームはUTF-8でエンコードされており、メール送信の際にJISに変換されています。
  • 対応したが納得できなかったお客様からのメールを受信しています。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.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)を使う方がいいんですが・・・

ab-bz
質問者

お礼

返信が遅れ申し訳ありません。 ご教示いただいた修正をして、テストメールを送ってみました。 結果は文字化けしませんでした。 ただ、私の環境では修正前でも文字化けしなかったので、 他の環境で文字化けするか、まだわかりません。 ご回答ありがとうございました。 よろしくお願いします。

関連するQ&A