ホームページ  >  記事  >  バックエンド開発  >  PHPMailer によって送信されたメール内の中国語の添付ファイル名が文字化けする問題の解決策

PHPMailer によって送信されたメール内の中国語の添付ファイル名が文字化けする問題の解決策

WBOY
WBOYオリジナル
2016-07-25 08:59:421474ブラウズ
  1. $mail->AddAttachment($attach, $attach);
コードをコピー

指定しない場合、送信される添付ファイル名は文字化けします。

  1. $mail->AddAttachment($attach, $attach);
コードをコピー

送信したファイル名の中国語が消えて「.txt」になります。

解決策 1

class.phpmailer.php を開き、1007 行目あたりの関数 AddAttachment に次の文があります。

  1. //$filename =basename($path);
  2. if (false === strpos($path, '/'))
  3. $filename = $this->EncodeHeader($path);
  4. else
  5. $filename = $this->EncodeHeader(substr($path, strrpos($path, '/') + 1));
コードをコピー

解決策 2

ファイル名を中国語に設定する場合は、AddAttachment を呼び出すときに中国語名パラメーター (2 番目のパラメーター) を指定します。 例えば

  1. $mail->AddAttachment('temp/2011/test.rar', 'test.rar');
コードをコピー

その他の問題: 中国語のメールを送信すると、中国語が文字化けして表示されますコード

文字化けは、おそらくメールのタイトルがいくつかの小さなものに変換されるときに発生します =?utf-8?B?...?=、および中国語が誤って切り捨てられる可能性があります 行 1185 を変更します。

  1. $maxlen = 75 - 7 - strlen($this->CharSet);
コードをコピー

して、次のように変更します。

  1. $maxlen = 75000 - 7 - strlen($this->CharSet);
コードをコピー

添付、PHPMailerメール送信クラスV5.1ダウンロードアドレス。



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