- ベストアンサー
※ 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関数の仕様や設定の問題です。具体的な原因を特定するには、より詳細な情報が必要です。
- みんなの回答 (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()
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
なんともいえませんが、mail()コマンドでもおなじ症状ですか?
質問者
お礼
ありがとうございます。 mail()だと上記のような現象は起きないのですが、 日本語が件名、本文ともに文字化けしてしまいます。 文字化けしないのであれば、mail()でももちろん構いません。 文字化け解除に断念して、mb_send_mail にしました。
お礼
ありがとうございます。 教えていただいた方法で試した結果、 本文は、バッチリ文字化けが解消されました。 FROMは日本語を使わなかったので、まだ試してません。 SUBJECTは文字化けが起こってしまったのですが、 mb_encode_mimeheader($subject, "ISO-2022-JP", "Q")にしたら 解決しました。 おかげで勉強になりました。 ありがとうございます!