jphpmailerでのヘッダ、Subjectの文字化け - PHPプロ!Q&A掲示板

2819

  • 0P

jphpmailerでのヘッダ、Subjectの文字化け

質問日時 / 2010年7月22日 09:49 (最終編集:7月22日 10:07)    回答数 / 2件

Questioner:  ioaff  このエントリーをはてなブックマークに追加 

キーワード / jphpmailer    メール    文字化け   

現在、以下のURLより取得したjphpmailerを利用してメール送信フォームを作成しています。
http://code.google.com/p/jphpmailer/source/browse/trunk/jphpmailer.php
コアとなるphpmalerは最新の5.1を使用しています。
二つのライブラリ及び呼び出す側のスクリプトはすべてUTF-8で記述しており、
php.iniの記述も以下のようになっています。
  1. default_charset = UTF-8
  2. mbstring.language = japanese
  3. mbstring.http_input = auto
  4. mbstring.internal_encoding = UTF-8
  5. mbstring.http_output = UTF-8
jphpmailerのサンプルを参考にフォームからメールの送受信はできたのですが件名が文字化けしてしまいます。
件名には「お問い合わせがありました」という文字列を指定しているのですが、
Thunderbirdの受信トレイ上では
=?iso-2022-jp?B?GyRCJCpMZCQkOWckbyQ7JCwkIiRqJF4kNyQ/GyhC?=
となっており、
http://www.it-top.biz/tools/encode.php
こちらのサイトで変換をかけると、4 MIME(B)デコード後、SJIS変換(*1)では正常に値が取得できます。
また、該当メールをemlファイルに落としテキストエディタで開くと、Subjetctが
=?US-ASCII?B?PT9pc28tMjAyMi1qcD9CP0d5UkNKQ3BN?=
 =?US-ASCII?B?WkNRa09XY2tieVE3SkN3a0lpUnFKRjRrTnlRL0d5aEM/PQ==?=
となっており、想定していない文字コードになっております。

各クラスのエンコード設定は以下でテストしています。

jphpmailer
  1. class JPHPMailer extends PHPMailer {
  2.         var $CharSet = "iso-2022-jp";
  3.         var $Encoding = "7bit";
  4.         var $in_enc = "UTF-8"; //内部エンコード

phpmailer
  1. public $CharSet           = 'iso-8859-1';
  2.   public $Encoding          = '8bit';
いろいろと文字コード設定など試してみたのですが改善ができずこちらで質問させていただきました。
どなたか、手がかりでもいただければと思います。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01pannnajphpmailerというのを使ったことがないのでよく理解し
 ┗A01-1ioaffmb_send_mailを使ってみたところ正常に動作していまし

回答一覧

並び替え:

A01
answererpannna [7月24日 13:36]

jphpmailerというのを使ったことがないのでよく理解していませんが、
通常のmb_sendmail関数などを使った場合でも同じような現象が発生しますか?

# subjectだけ化けるっていうのはかなりおかしいような気もします…

実はjphpmailer.php(みたいな)ファイルの文字コードがutf-8じゃなかった、
なんてオチもたまにあったりするので見直してみるといいかも?

この意見に回答する

ツリーへ TOPへ

A01-1
replyerioaff [7月25日 09:12]

mb_send_mailを使ってみたところ正常に動作していました。

>Subjectだけ化ける
これはSubjectだけ2バイト文字使ってるからかな?と思っています。

jphpmailer.phpのエンコードは見直してみましたがUTF-8になってました。
当面、複雑なことはやらないつもりなので、シンプルにmb_send_mail使ってみます。
ご返答ありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)