- 締切済み
メールの文字化けについて
お世話になっております。 phpを利用し、Postfixにてメールを送信するプログラムを作成しました。 しかしながら、下記プログラムではタイトルに"日本語"を入れた場合、 "ThunderBird"でメールを受け取ると、 "◆◆◆◆◆◆◆◆◆◆"のように文字が化けてしまいます(本文は文字化けしません。)。 しかし、YahooWebメールではタイトル・本文に関わらず正常に文字が出力されます。 どの部分を修正すれば、日本語タイトル文を 文字化けさせず表示させることができるでしょうか? サーバの文字コードは"EUC"となっています。 ご教授のほどよろしくお願いします。 // メール送信元を指定 $from = "mail"; $title = "メール届きましたか?"; // BCC値を決定します。 // メール本文を組み立てます。 $headers .= "From: $from\r\n"; $headers .= "Bcc: aiai@ngmail.com\r\n"; $headers .= ('Content-Type:text/html; charset=EUC-JP'); // 本文の値を決定します。 //$title2 = "=?iso-2022-jp?B?".base64_encode($title)."?="; $naiyou2 = "仮ユーザID:$name\n 仮パス:$yoyakusha<br> メールアドレスfrom:$from<br> メールアドレスto:$email<br> @ペイにて登録したユーザID:$title\n"; mail($email, $title, $naiyou2, $headers);
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- galluda
- ベストアンサー率35% (440/1242)
がるです。 えっと…文字コードは、sjisではなくて、jisにしてください。sjisだと多分確定で読めないと思います。 あと、今しがた気づいたのですが。Content-typeは、text/htmlではなくて、text/plain菜のではないかと思うのですがどうでしょうか? このあたりはPHPというよりはmail(関数ではなくて、いわゆるe-mail自体)の知識になるので。 そのあたりについて一度調べられてみると、また色々と得るものも多いかと思います。 また上手くいかなかったら書き込んでいただければ。
- a-saitoh
- ベストアンサー率30% (524/1722)
'Content-Type:text/html; のところで、コロンの後ろに半角スペースが必要です。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 とりあえず最低限3箇所修正をしてください。 まず、Content-typeでのcharsetはEUCではNGです。ISO-2022-JPにしてください。 次に、titleは、コメントアウトをはずしてtitle2を使ってください。 最後に、メール本文($naiyou2)を、マルチバイト関数 mb_convert_encoding を用いて、jisコードに変換してからmail関数をcallしてください。 これで文字化けはなおるかと思います。 ちなみに。マルチバイト関数にあるmb_send_mailはトラブルの話を散見しますので、使わないほうがよろしいかと思われます。 なぜ化けるのか、どうしてなおったかなどは、mailについて色々と調べられてみると、得られるものも多いかと思います。
補足
お世話になっております。 早速お教え頂いたとおり、 下記内容に変更してみました。 変更を実施したところ、 ThunderBirdでメールを受け取ると、 タイトル・本文共に"?"表記になってしました。 yahoowebメールは問題ございません。 どこか設定が違っているところがありますでしょうか? ご教授のほどよろしくお願いします。 // メール送信元を指定 $from = "mail"; $title = "予約完了メール"; // BCC値を決定します。 // メール本文を組み立てます。 $headers .= "From: $from\r\n"; $headers .= "Bcc: aiai@ngmail.com\r\n"; //$headers .= ('Content-Type:text/html; charset=EUC-JP'); $headers .= ('Content-Type:text/html; charset=ISO-2022-JP'); // 本文の値を決定します。 $title2 = "=?iso-2022-jp?B?".base64_encode($title)."?="; $naiyou2 = "仮ユーザID:$name\n 仮パス:$yoyakusha<br> メールアドレスfrom:$from<br> メールアドレスto:$email<br> @ペイにて登録したユーザID:$title\n"; $naiyou2 = mb_convert_encoding($naiyou2, "EUC-JP", "SJIS"); mail($email, $title2, $naiyou2, $headers);