PHPMailer发送邮件中文附件名乱码的解决办法

发布时间:2019-11-18编辑:脚本学堂
PHPMailer发送带中文附件名的邮件时,中文附件出现乱码,为大家提供二个解决方法,有需要的朋友,可以参考下。

假如使用PHPMailer类要发送的附件是“测试.txt”,如果在添加附件的时候强制使用指定文件名的方式:
 

复制代码 代码示例:
$mail->AddAttachment($attach, $attach);
 

发送过去的附件文件名将会是乱码,如果不指定:
 

复制代码 代码示例:
$mail->AddAttachment($attach, $attach);
 

发送过去的文件名中的中文直接没有了,变成了“.txt”。

解决办法一

打开class.phpmailer.php,在大概第1007行左右,函数AddAttachment中,有一句:
 

复制代码 代码示例:
//$filename = basename($path);
if (false === strpos($path, ‘/’))
$filename = $this->EncodeHeader($path);
else
$filename = $this->EncodeHeader(substr($path, strrpos($path, ‘/’) + 1));

解决办法二

如果想设置文件名为中文,则在调用AddAttachment时提供中文的name参数(第二个参数)。
比如
 

复制代码 代码示例:
$mail->AddAttachment(‘temp/2011/test.rar’, ‘测试.rar’);

其它问题:发送中文邮件的时候,中文会出现乱码

乱码的产生大概是在将邮件标题转成几个小的=?utf-8?B?...?=时,可能是无意中把中文给截断了产生的,修改第1185行:
 

复制代码 代码示例:
$maxlen = 75 - 7 - strlen($this->CharSet);
 

改成:
 

复制代码 代码示例:
$maxlen = 75000 - 7 - strlen($this->CharSet);

附,PHPMailer邮件发送类V5.1下载地址
 

您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子