windowsXP、XAMPPでメーラーMercuryを使用してローカルでメールしたとき受信メールの
SubjectがSubject: =?ISO-2022-JP?B?GyRCRnxLXDhsJTUlViU4JSclLyVIGyhC?=と文字化けします。
文字化けしないようにはどうすればいいのでしょうか。
下記内容がメールしたときのPHP、php/php.ini、メールの内容です。
また図がMercuryの設定内容です。
PHPの内容#################################################################################
<?php
$from = "admin@localhost";
$to = "admin@localhost";
$subject = '日本語サブジェクト';
$body = "本文です。\n日本語テスト";
//送信処理(日本語メール特有の文字コード変換とかヘッダの処理をする)
$body = mb_convert_encoding($body, 'iso-2022-jp', 'UTF-8');
$subject = mb_convert_encoding($subject, 'iso-2022-jp', 'UTF-8');
$subject = mb_encode_mimeheader($subject, 'iso-2022-jp');
$headers[] = "From: $from";
$headers[] = 'Content-Type: text/plain; charset=iso-2022-jp';
$headers[] = 'Transfer-Encoding: 7bit';
mail($to, $subject, $body, join("\n", $headers));
?>
xampp/php/php.iniの内容#################################################################################
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = postmaster@localhost
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
mail.add_x_header = Off
mail.log = "C:\xampp\apache\logs\php_mail.log"
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = auto
mbstring.script_encoding = UTF-8
メールの内容#################################################################################
Received: from spooler by localhost (Mercury/32 v4.72); 26 Sep 2010 22:09:23 +0900
X-Envelope-To: <admin@localhost>
Return-path: <postmaster@localhost>
Received: from localhost (127.0.0.1) by localhost (Mercury/32 v4.72) with ESMTP ID MG000001;
26 Sep 2010 22:09:22 +0900
To: admin@localhost
Subject: =?ISO-2022-JP?B?GyRCRnxLXDhsJTUlViU4JSclLyVIGyhC?=
From: admin@localhost
Content-Type: text/plain; charset=iso-2022-jp
Transfer-Encoding: 7bit
本文です。
日本語テスト
No.1ベストアンサー
- 回答日時:
mb_encode_mimeheader関数は、PHPのビルド時のデフォルトの文字コードから、第二引数で指定した文字コード(ISO-2022-JP)に変換をした上で、mimeヘッダにエンコードをしてくれる関数です。
つまり、この関数を叩く前に、UTF-8の文字コードをISO-2022-JPに変換してはダメです。
<?php
//こいつが不要
$subject = mb_convert_encoding($subject, 'iso-2022-jp', 'UTF-8');
?>
php.iniの設定で、mb_internal_encodingの値はUTF-8に成っているので今回必要ないですが、
レンタルサーバとか、他の環境でiniを編集出来ない場合は、スクリプトの頭にでも
<?php
mb_internal_encoding('UTF-8');
?>
とでもしてやってください。これが確実です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
ファイルの書き込みについて教...
-
if(preg_match("/[^0-9]/",$gu_...
-
アマゾンのような評価の星を選...
-
phpでcookieがうまく保存されない
-
ファイルアップロードの上限を...
-
PHPで訪問回数を表示するカウン...
-
PHPSpreadsheetを使って関数を...
-
記述のおかしいところを教えて...
-
php テーブルが作成できない
-
PHPのエラーの解消法について教...
-
【スプレッドシート】順位のつけ方
-
PHP MySQLに画像を直接保存
-
Q&Aサイトを作成していてURLの...
-
アップロードファイルの数に応...
-
PHPのセッション有効期限について
-
php 確認表示画面で値をSESSION...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エンコーディングについて
-
phpのhex2binについてphpで、ut...
-
ハシゴの「高」が「?」に置き...
-
PHPでCSV出力時の文字化け(一部)
-
$str=preg_replace('/\\u3000/'...
-
PHPの文字化けした文字だけ削除...
-
phpMyAdminで文字化け
-
【PHP】ファイル読み込みで...
-
MySQL文字コード
-
windowsXP、XAMPPでメーラーMer...
-
i18n_convert と mb_convert_e...
-
データベースから取り出した日...
-
scandir関数取得結果の文字化け
-
PHPフォーム→PHP確認画面で...
-
文字化け
-
header("location~")をPOSTで...
-
PHPExcelで日本語(漢字)ファ...
-
mysql utf8、php・euc-jp で出...
-
PHPの文字コード (php.iniの...
-
XML出力時の日本語一部文字化け
おすすめ情報