ホームページ >バックエンド開発 >PHPチュートリアル >PHPMailerメールタイトルの中国語文字化けの解決策

PHPMailerメールタイトルの中国語文字化けの解決策

WBOY
WBOYオリジナル
2016-07-25 08:59:401099ブラウズ
  1. /**

  2. * PHPMailer メール送信
  3. * bbs.it-home.org を編集
  4. */
  5. function smtp_main_send( $to, $subject, $message, $from, $fromName )
  6. {
  7. $mail = 新しい PHPMailer ();

  8. $mail->CharSet = "UTF-8"; // 設置コード

  9. $mail->IsSMTP(); // SMTP サービスを使用する設定です

  10. $mail->Host = "smtp.mail.com";
  11. $mail->Username = "user";
  12. $mail->Password = "pass";
  13. $mail ->SMTPAuth = true;

  14. $mail->From = $from;

  15. $mail->FromName = $fromName;

  16. if ( is_array( $to ) ) {

  17. foreach ( $to as $address ) {
  18. $mail->AddAddress( $address );
  19. }
  20. } else {
  21. $mail->AddAddress( $to );
  22. }

  23. $mail->Subject = $subject;

  24. $mail->Body = $message;
  25. $mail->AltBody = $message;
  26. $mail->IsHTML( true );

  27. < ;p> return $mail->Send();
  28. }
  29. ?>

倍制コード

以上の代コード送信英文邮件には問題はありませんが、中文邮件の送信時には乱コードが発生します。

解決方法: 必要なclass.phpmailer.phpのいくつかの修正:

修正1,1137行: function EncodeHeader ($str, $position = 'text') {

将関数数增追加一パラメータ:

  1. function EncodeHeader ($str, $position = 'text', $pl = 0) {
  2. if ( $pl ) return "=?" 。 $this->CharSet 。 「?B?」 。 Base64_encode($str) 。 "?=";
复制代码

修正改2,796行: $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));

変更後の内容:

  1. $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject),'text', 1));
偽造コード

は、中国語の乱コードの問題を即座に解決できます。

追加、PHPMailer プログラムは V5.1 のダウンロード アドレスを送信します。


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