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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstorm2021.9激活码[最新免费获取]

    (phpstorm2021.9激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWNlbnNlSWQi…

    2022年3月26日
    49
  • linux串口驱动分析

    linux串口驱动分析

    2021年11月30日
    44
  • Typora——MarkDown学习笔记

    Typora——MarkDown学习笔记一级标题:# 文字二级标题:## 文字三级标题:### 文字字体粗体:文字两边加**斜体:文字两边加*斜体并加粗:文字两边加***删除文字:两边加~~引用:>+空格分割线:— 或者***图片:![截图](图片路径)超链接:点击跳转排序:排序号:1. 2. 3.无序:·回车表格名字性别生日张三男19990513代码:skdsldl…

    2022年8月8日
    7
  • session.setattribute 方法_session如何设置和读取

    session.setattribute 方法_session如何设置和读取session.setAttribute()和session.getAttribute()的用法: session.setAttribute(“sessionName”,Object);//保存 //用来设置session值的,sessionName是名称,object是你要保存的对象。 session.getAttribute(“sessionName”);//取得 //用来得到对应名称的session值,即得到object对象,注意需要进行类型转换!…

    2022年8月31日
    3
  • JAVA操作FTP(FTP工具类)

    JAVA操作FTP(FTP工具类)JAVAFTP操作导入commons-net<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version></dependency>packagecom.my.ftp.test;importjava.io.File;imp

    2022年6月9日
    45
  • Sequelize多表联合查询案例

    Sequelize多表联合查询案例一、Table:现在有两个表,A和B,关联关系:MATCH表中的job_history_id与JOB_HISTORY表中的id相关联。二、需求:查询Match表中的user_id,report_comment,以及job_history_id所关联的JOB表中的job_link,在前端显示。三、Code:1.后端首先要建立两个表的关联:MatchScoreReportModel.belongsTo(JobHistoryModel,{foreignKey:’job_history

    2022年5月18日
    52

发表回复

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

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