![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
PHPでフォームメールの作っているのですが、Gmailで送信したメールを受け取ると□□□□□というように文字化けが起こっていまいます。
アウトルック、ホットメールなどは大丈夫なのですが、グーグルのGmailだけ駄目なようです。なぜ文字化けするのでしょうか?
mb_language("Ja");
$header = "From: reminder@aaa.com\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/plain;charset=ISO-2022-JP\r\n";
$header .= "Content-Transfer-Encoding: base64";
$to = "aaa@gmail.com";
$subject = "送信テスト";
$body = "本文テスト本文テスト";
$subject = base64_encode($subject);
$subject = mb_convert_encoding($subject,"ISO-2022-JP");
$subject = "=?ISO-2022-JP?B?" . $subject . "=?=";
$body = base64_encode($body);
$body = mb_convert_encoding($body,"ISO-2022-JP");
$success = @mail($to,$subject,$body,$header);
if($success) print "成功";
else print "失敗";
No.2ベストアンサー
- 回答日時:
まず確認ですが、gmailで発信したメールに関する質問ではなく、
gmailで受信したメールの問題ですよね。
わたしの理解では
base64_encode()とmb_convert_encoding()の順番が逆さま
じゃないですか。
このままだとヘッダーでiso-2022-jpを指定しているのに、
中身がおそらくはeuc-jpで矛盾を生じます。
アウトルックはそういう標準に従わないメールにも強いです。
またsubjectはbase64化が必要ですが、本文はiso-2022-jpならば、
Content-Transfer-Encoding: 7bit
にしてやればbase64化は不要ですね。
自分はgmailアカウントを持っていないので、自信ないですが、
日本語のメールは基本的に殆どがiso-2022-jpで送られている
はずですので、一般の日本語メールが読めるのなら、
iso-2022-jpでも構わないという事になります。
>base64_encode()とmb_convert_encoding()の順番が逆さま
これは携帯などの絵文字入力を変換させる為のもので問題ないようでした。
>本文はiso-2022-jpならば、Content-Transfer-Encoding: 7bitにしてやればbase64化は不要
これは不要でした。
確かな情報ではないのですが、「Gmail自体がbase64のエンコーディングに対応しておらず、Gmailで読めるようにするには、Content-Transfer-Encoding: 7bitを使う」ということでした。
皆様ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UTF8メールがLotus Notesで文字...
-
SQL Serverで文字コードUTF-8
-
SJIS→UTF-8変換後の文字化けに...
-
mb_strposについて予定外の結果...
-
携帯とPCにメールを送る(文字...
-
mb_regex_encodingでエンコード...
-
廣のjis変換で文字化け
-
PHPmailerでの添付ファイルの文...
-
文字列を文字コードの数値に変...
-
phpのメールフォームの完了画面...
-
文字化け変換方法
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
COBOLの改行
-
エスケープ文字の復帰(¥r)と...
-
改行コード(CR/LF)の設...
-
全角括弧と全角読点の間隔を狭...
-
ダブルコーテーション(
-
C++で空Enterの入力を判...
マンスリーランキングこのカテゴリの人気マンスリー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を取得すると文字化けする。
-
全角スペースを半角スペースに変換
-
Gmailへのメール送信で文字化け
-
includeファイルの文字コードに...
-
UTC-8→SJISで文字化け
おすすめ情報