- function EncodeHeader ($str, $position = 'text', $pl = 0) {
- if ( $pl ) は "=?" を返します。 ($str) . "?=";
-
コードをコピー
は、この関数に定義された追加のパラメーターです。
当然のことながら、この関数が呼び出されるすべての場所のパラメータを変更する必要があります。
検索: EncodeHeader(
次のように変更します。
- $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject))));
-
-
コードをコピー
変更は次のようになります。
- $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject),'text', 1));
-
Copyコード
は、変更した関数内の判定文を呼び出せるように、3番目の参照を1として定義することを意味します。
これを変更しました。もちろん、このクラスを呼び出すときに CharSet=UTF8 を設定することを忘れないでください。
このようにして、この判定文は文字化けすることなくUTF8に変換できます。
次のように書くことができます:
- $mail = new PHPMailer();
- $mail->CharSet = "utf8";
-
コードをコピー
2 番目: 文字化けしたメールのタイトルを修正する
Subject はメールの件名です。この場所を正しく見つける必要があります。私のようなものはこのように呼ばれます
- $mail = new PHPMailer();
- $mail->Subject="XX title";
-
コードをコピー
そこで、次のように変更します。
- $mail->Subject = "=?utf-8?B?".base64_encode("XX title")."?=";
-
-
コピーコード
もトランスコード中です。
その3:その他の箇所の文字化けを修正
基本的な原理は2回目の修理と同じです。
FromName は送信者を処理します。
送信者の名前を確認できる場所:
私のものは次のように書かれています:
- $mail = new PHPMailer();
- $mail->FromName = "=?utf-8?B?".base64_encode("イエロー カード ネットワーク顧客オンライン メッセージ]")."?= ;
-
コードをコピー
上記3箇所を解決できれば、Phpmailerで中国語メールを送信する際のコード化け問題は基本的に解決できます。
phpmailer 経由で電子メールを送信するための変更されたコード例を添付します: http://file.jbxue.com/code/201304/phpmailer_lyb_jbxue.com.zip。
|