日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP 5 » メール送信で件名が文字化けする。

メール送信で件名が文字化けする。

ページ: 1

投稿者 投稿
会員
登録者: 5 月 2009
返信数: 4
初めまして

現在、正常に動作している環境を下記に入替を行いました。

httpd-2.0.51-25   → 2.2.6-10
php4-4.3.11-8    → 5.2.4-18
sendmail-8.13.1-3  → postfix-2.4.5-10


メール送信でどうしても件名が下記のようになります

=?ISO-2022-JP?B?GyhJJVUlISUkJRskQnYnGyhJQCUmJRsoQj8bJEJ6IxsoSTwlSRsoQgo=?=


メールのソースを見ると下記のように途中で改行されています。

Subject: =?ISO-2022-JP?B?PT9JU08tMjAyMi1KUD9CP0d5aEpK?=
=?ISO-2022-JP?B?VlVsSVNVa0pSc2tRblluR3loSlFDVW1KUnNvUWo4YkpFSjZJeHNvU1R3?=
=?ISO-2022-JP?B?bFNSc29RZ289Pz0=?=

正常に動作している環境は改行されずに1行です。

最後の =?= が ?= になっているのが原因だと思いまが、色々調べましたが回避方法が分かりません。

--------------------------------

$txtSubject = "=?ISO-2022-JP?B?" . base64_encode(mb_convert_encoding("ファイルダウンロード\n","JIS","SJIS")) . "?=";

省略

mb_send_mail($UserMail[0], $txtSubject, $txtMailMsg, gcMailFrom);
会員
登録者: 10 2007
返信数: 71
PHP4からPHP5に移行されたということですので、php.iniでの設定内容が変わったということはありませんか?。マルチバイトの設定が変わるとmb_send_mail()での挙動が(たしか)変わったと思います。
php.iniでmbstring.languageの設定がJapanese等に指定されていると、mb_send_mail()での件名と本文は自動的にエンコードされます。ですので、直接件名を書く
mb_send_mail($UserMail[0], "ファイルダウンロード\n", $txtMailMsg, gcMailFrom);
という方法も試されてみてはいかがでしょうか?。
参考:mb_send_mail()
会員
登録者: 5 月 2009
返信数: 4
ご回答ありがとうございます。

直接件名を書く方法で解決しましたが、複数のソースを変更する必要があります。

他の方法がありましたらお願いいたします。
会員
登録者: 10 2007
返信数: 71
PHP 5.2.8 (Windows Binary CLI)でちょっと試してみましたが、残念ながら今のところmb_send_mail()をmail()関数にそのまま置き換える方法ぐらいしかみつかりませんでした。

mb_language()でどう設定してもmb_send_mail()では自動的に何かしらエンコードされてしまうみたいなので、php.iniを変更してもダメかな?と思っています・・・。

ページ: 1

日本PHPユーザ会 掲示板 » PHP 5 » メール送信で件名が文字化けする。

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています