[DTP・webデザイン・wordpress・php]お役に立てればなによりです
Glad to be of some help.
DTPデザイン・WEBデザインなど、印刷物やホームページの制作現場で、同じところでつまずいている方に、少しでもお役たてればなによりです。

PHPメール送信ライブラリ class.phpmailer.php でbody部分の文字化け

最終更新日最終更新日:2010.12.03  カテゴリーカテゴリ:PHP 
php

コンタクトフォームなどで、PHPからメールを送信する場合に使用するスタンダードなライブラリ「class.phpmailer.php」で、body部分だけが、なぜか文字化けしてしまった時の、とりあえずの対処方法です。


メール送信PHPファイルで「mb_internal_encoding(“UTF-8″);」・「mb_convert_encoding($msg,”UTF-8″);」を記述しても、なぜかbody(本文)部分だけが文字化けしてしまいまして、結構はまってしまいました。

「class.phpmailer.php」の「$CharSet」を変更してみる

「class.phpmailer.php」の60行目付近の「$CharSet」が[iso-8859-1]に設定されていたので、「これやっ!」っと色めきだって、[ISO-2022-JP]に変更したのですけれども、文字化けは改善されず・・・。

変更前

 /**
 * Sets the CharSet of the message.
 * @var string
 */
public $CharSet           = 'iso-8859-1';

変更後

 /**
 * Sets the CharSet of the message.
 * @var string
 */
public $CharSet           = 'ISO-2022-JP';

だめもとで[UTF-8]にしてみる

ならばと思いまして[iso-8859-1]を[UTF-8]に変更したところ、文字化けは解消されました。

変更前

 /**
 * Sets the CharSet of the message.
 * @var string
 */
public $CharSet           = 'ISO-2022-JP';

変更後

 /**
 * Sets the CharSet of the message.
 * @var string
 */
public $CharSet           = 'UTF-8';

しかし、JISしか表示できないメールソフトや、携帯電話では問題がでそうですけど、そのときになったら、また考えることにします。