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ランキング
-
phpでPEAR::DBを使っているので...
-
phpでcookieがうまく保存されない
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
PHPSpreadsheetを使って関数を...
-
アンドロイドスマホでのphp ech...
-
Postgresの特定のカラムからス...
-
PHPのエラーの解消法について教...
-
PHP MySql ページング
-
ECCUBE4のページ管理でPHPを実...
-
PHPで画像の渡しが上手く行きま...
-
ログインした掲示板ですが、直...
-
ここで言う空文字の意味とは?
-
PHP でメールフォームを作成したい
-
MySQLの配置が変わったため、db...
-
phpのクラスメソッドの定義が長...
-
phpでクラスのメソッドで同名の...
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$str=preg_replace('/\\u3000/'...
-
mb_convert_encoding で?になる。
-
i18n_convert と mb_convert_e...
-
PHPの文字化けした文字だけ削除...
-
header("location~")をPOSTで...
-
ハシゴの「高」が「?」に置き...
-
mysql utf8、php・euc-jp で出...
-
phpのhex2binについてphpで、ut...
-
windowsXP、XAMPPでメーラーMer...
-
エンコーディングについて
-
PHPフォーム→PHP確認画面で...
-
データベースから取り出した日...
-
Content-Typeが機能していない?
-
POST文字列が化ける(外字)
-
scandir関数取得結果の文字化け
-
文字化け
-
【PHP】ファイル読み込みで...
-
phpMyFaqでの文字化けについて
-
XML出力時の日本語一部文字化け
-
urlencodeしていない日本語をPA...
おすすめ情報