PHPMailer发送邮件中文附件名是乱码

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);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114223.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月22日 上午8:00
下一篇 2021年9月22日 上午9:00


相关推荐

  • pytorch中resnet_通过Pytorch实现ResNet18

    pytorch中resnet_通过Pytorch实现ResNet18对于像我这样刚刚入门深度学习的同学来说,可能接触学习了一个开发工具,却没有通过运用来熟练的掌握它。而ResNet是深度学习里面一个非常重要的backbone,并且ResNet18实现起来又足够简单,所以非常适合拿来练手。我们这里的开发环境是:python3.6.10pytorch1.5.0torchvision0.6.0cudatoolkit10.2.89cudnn7.6.5首先,我们需…

    2022年5月26日
    36
  • javascript 隐式转换_mysql隐式转换

    javascript 隐式转换_mysql隐式转换JavaScript的隐式转换一、JavaScript数据类型二、JavaScript隐式转换1.隐式转换规则1.+运算符2.==运算符3.>运算符4.复杂数据类型一、JavaScript数据类型js中有7种数据类型,可以分为两类:原始类型、对象类型。简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、String和Symbol。ES6中新增了一种Symbol。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属

    2022年10月10日
    6
  • MATLAB学习笔记 plotyy函数

    MATLAB学习笔记 plotyy函数1、

    2022年6月29日
    38
  • Hello-Agents多智能体协作模式:分工、合作、辩论的完美实现

    Hello-Agents多智能体协作模式:分工、合作、辩论的完美实现

    2026年3月16日
    2
  • Boltzmann机详解

    Boltzmann机详解基于热力学的随机型神经网络–Boltzmann机1.模拟退火算法我们知道,Hopfield神经网络拥有联想记忆的能力,这也是对生物神经网络的一种模拟。但是,Hopfield神经网络也和BP神经网络一样,有一个致命的缺陷:只能找到局部最优解,而无法沿着梯度上升的方向在全局的角度寻求全局最优解。为了解决这个问题,1983年,Kirkpatrick等提出了模拟退火算法(SA)能有效的解决局部最优…

    2022年7月12日
    17
  • sqlserver怎么用语句创建表_mysql查询表的创建语句

    sqlserver怎么用语句创建表_mysql查询表的创建语句原文地址:http://database.51cto.com/art/201010/231018.htmSQLServer创建表是最常见也是最常用的操作之一,下面就为您介绍SQLServer创建表的语句写法,供您参考,希望可以让您对SQLServer创建表方面有更深的认识。USE suntest create table 仓库 ( 仓库编号 int ,  仓库

    2022年10月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号