• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP の mb_send_mail で HTMLメール送信)

PHPのmb_send_mailでHTMLメール送信の問題

このQ&Aのポイント
  • PHPのmb_send_mailを使用してHTMLメールを送信すると、受信メールのヘッダ情報が勝手に追加される問題が発生しています。
  • 送信するメールのヘッダ情報は適切に指定しているにもかかわらず、受信メールに勝手にContent-Type:text/plainなどが追加されてしまいます。
  • 原因として考えられるのは、mb_send_mail関数の仕様や設定の問題です。具体的な原因を特定するには、より詳細な情報が必要です。

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

  • ベストアンサー
  • hegemon
  • ベストアンサー率72% (21/29)
回答No.2

mb_send_mail()は、細かいエンコーディングの調整ができないので、どうしても文字化けしがちです。 なので、件名や本文など、日本語が入る項目を個別にエンコーディング変換してからmail()関数に渡すのがオススメです。面倒ですが。 色々試した結果、下記のようにしたら文字化けはなくなりました。(もしかしたら、余分なものもあるかも知れませんが) 1. FROM 日本語名の部分をISO-2022-JPに変換、アドレス部分を追加してからMIME変換 2. SUBJECT ISO-2022-JPに変換してからBase64に変換 3. 本文 ISO-2022-JPに変換 各変換は下記の関数を使いました。 ISO-2022-JPへの変換   →mb_convert_encoding() Base64への変換   →base64_encode() MIMEへの変換   →mb_encode_mimeheader()

fufukuku
質問者

お礼

ありがとうございます。 教えていただいた方法で試した結果、 本文は、バッチリ文字化けが解消されました。 FROMは日本語を使わなかったので、まだ試してません。 SUBJECTは文字化けが起こってしまったのですが、 mb_encode_mimeheader($subject, "ISO-2022-JP", "Q")にしたら 解決しました。 おかげで勉強になりました。 ありがとうございます!

その他の回答 (1)

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

なんともいえませんが、mail()コマンドでもおなじ症状ですか?

fufukuku
質問者

お礼

ありがとうございます。 mail()だと上記のような現象は起きないのですが、 日本語が件名、本文ともに文字化けしてしまいます。 文字化けしないのであれば、mail()でももちろん構いません。 文字化け解除に断念して、mb_send_mail にしました。