お問い合わせメールフォームを作りました。
一部のお客様からのメールが部分的に文字化けします。
==========
E月E6日に宿泊させてぁEだきました�
そE際E対応でどぁEても納得できなかった為メールしました�
==========
メールフォーム自体は UTF-8 でエンコードしていて、メール送信の際に JIS にしています。
==========
<?php
mb_language("Japanese");
mb_internal_encoding("utf-8");
[snip]
$from_name = mb_convert_encoding($from_name, "JIS", "UTF-8");
$from_name = '=?ISO-2022-JP?B?'.base64_encode($from_name).'?=';
$body = mb_convert_encoding($body, "JIS", "UTF-8");
[snip]
$mail_true = @mb_send_mail($mailto, $subject, $body, $additional_headers);
[snip]
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)を使う方がいいんですが・・・
返信が遅れ申し訳ありません。
ご教示いただいた修正をして、テストメールを送ってみました。
結果は文字化けしませんでした。
ただ、私の環境では修正前でも文字化けしなかったので、
他の環境で文字化けするか、まだわかりません。
ご回答ありがとうございました。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPmailerでの添付ファイルの文...
-
文字化け変換方法
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
ソースコードの1行が長いとき...
-
メッセージボックスで1025文字...
-
エクセルのCOUNTIFが正しくカウ...
-
【VBA】エクセルで最後の不要な...
-
\\nと\\rの違い
-
カンマの含まれる文字列の数値...
-
Memoコントロールの1行あたりの...
-
php 正規表現で、\\マークを取...
-
fscanfについて
-
文字列の括弧について(初心者)
-
16進数の文字列をアスキーコー...
-
エクセルでの漢字、カタカナ、...
-
エクセルVBA 文字列領域が不足...
-
文字列中の両丸括弧を取り除くV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
SQL Serverで文字コードUTF-8
-
SJISで取得した半角カナをUTF-8...
-
PHPmailerでの添付ファイルの文...
-
PostgreSQLからCSV形式でエクス...
-
PHP+Postgres 「髙」が文字化け
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
UTF8メールがLotus Notesで文字...
-
PHPのsendmailでの文字化けにつ...
-
「あ」→「82A0」のようにshift-...
-
メールのCCに複数のアドレスを...
-
phpMyAdmin内での文字化け
-
mb_ereg_replace での文字変換
-
mail()で送信したメールのタイ...
-
PHP cURLでPOSTした値が文字化...
-
RSSを取得すると文字化けする。
-
マルバツゲームのプレーヤー交...
-
includeファイルの文字コードに...
-
DOMDocumentの文字化けに悩まさ...
-
UTC-8→SJISで文字化け
おすすめ情報