PHPMailerで送受信されるメールのタイトル、送信者、内容が文字化けする問題の究極の解決策
リリース: 2016-07-25 08:59:40
- 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。
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31