>  기사  >  백엔드 개발  >  PHPMailer로 보내고 받는 이메일의 제목, 보낸 사람, 내용이 왜곡되는 문제에 대한 궁극적인 솔루션입니다.

PHPMailer로 보내고 받는 이메일의 제목, 보낸 사람, 내용이 왜곡되는 문제에 대한 궁극적인 솔루션입니다.

WBOY
WBOY원래의
2016-07-25 08:59:401894검색
  1. function EncodeHeader ($str, $position = 'text', $pl = 0) {
  2. if ( $pl ) return "=?" . $this->CharSet . "?B?" . base64_encode($str) . "?=";
复制代码

为这个函数多定义的一个参数。

自然要修改所有调用这个函数的地方的参数。 查找:EncodeHeader( 如下类似这样的都要改:

  1. $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));
复制代码

改成:

  1. $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject),'text', 1));
复制代码

意思是定义第三个参考为1,好可以调用我们改的函数里的那个判断语句。

改了这里,当然你要记得在调用这个类的时侯,设置CharSet=UTF8啊。 这样,这个判断语句才能转UTF8不乱码了。 可以这么写的:

  1. $mail = new PHPMailer();
  2. $mail->CharSet = "utf8";
复制代码

第二:修复邮件标题乱码 Subject是处理邮件标题,你要找准这个地方了。像我的是这样调用了

  1. $mail = new PHPMailer();
  2. $mail->Subject="某某标题";
复制代码

那么,像这样的,改成这样:

  1. $mail->Subject = "=?utf-8?B?".base64_encode("某某标题")."?=";
复制代码

也是转码啊。

第三:修复其他地方乱码 基本原理跟第二个修复一样的。 FromName是处理发件人来着。 找到发件人姓名的地方: 我的是这样写的:

  1. $mail = new PHPMailer();
  2. $mail->FromName = "=?utf-8?B?".base64_encode("黄牌网络客户网上留言】")."?=";
复制代码

如果能搞定以上三个地方,Phpmailer发送中文邮件时的乱码问题,基本就可以搞定。

附,一个修改好的完整phpmailer发邮件的实例代码:http://file.jbxue.com/code/201304/phpmailer_lyb_jbxue.com.zip。



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.