ホームページ  >  記事  >  バックエンド開発  >  PHPMailerで送受信されるメールのタイトル、送信者、内容が文字化けする問題の究極の解決策

PHPMailerで送受信されるメールのタイトル、送信者、内容が文字化けする問題の究極の解決策

WBOY
WBOYオリジナル
2016-07-25 08:59:401887ブラウズ
  1. function EncodeHeader ($str, $position = 'text', $pl = 0) {
  2. if ( $pl ) は "=?" を返します。 ($str) . "?=";
コードをコピー
は、この関数に定義された追加のパラメーターです。

当然のことながら、この関数が呼び出されるすべての場所のパラメータを変更する必要があります。 検索: EncodeHeader( 次のように変更します。

  1. $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject))));
コードをコピー
変更は次のようになります。

  1. $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject),'text', 1));
Copyコード
は、変更した関数内の判定文を呼び出せるように、3番目の参照を1として定義することを意味します。

これを変更しました。もちろん、このクラスを呼び出すときに CharSet=UTF8 を設定することを忘れないでください。 このようにして、この判定文は文字化けすることなくUTF8に変換できます。 次のように書くことができます:

  1. $mail = new PHPMailer();
  2. $mail->CharSet = "utf8";
コードをコピー
2 番目: 文字化けしたメールのタイトルを修正する Subject はメールの件名です。この場所を正しく見つける必要があります。私のようなものはこのように呼ばれます

  1. $mail = new PHPMailer();
  2. $mail->Subject="XX title";
コードをコピー
そこで、次のように変更します。

  1. $mail->Subject = "=?utf-8?B?".base64_encode("XX title")."?=";
コピーコード
もトランスコード中です。

その3:その他の箇所の文字化けを修正 基本的な原理は2回目の修理と同じです。 FromName は送信者を処理します。 送信者の名前を確認できる場所: 私のものは次のように書かれています:

  1. $mail = new PHPMailer();
  2. $mail->FromName = "=?utf-8?B?".base64_encode("イエロー カード ネットワーク顧客オンライン メッセージ]")."?= ;
コードをコピー
上記3箇所を解決できれば、Phpmailerで中国語メールを送信する際のコード化け問題は基本的に解決できます。

phpmailer 経由で電子メールを送信するための変更されたコード例を添付します: http://file.jbxue.com/code/201304/phpmailer_lyb_jbxue.com.zip。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。