Yii Swiftmailer 发送中文附件

本文介绍如何解决Yii2框架下使用SwiftMailer发送带有中文名称附件时出现的问题。通过修改basename()函数的使用方式来确保附件名正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所用的是Yii2 的basic框架。它本身集成了邮件发送插件swiftmailer,发送邮件是很方便的,但是当发送的邮件带有中文名称的附件时,就出现了问题,邮件所带的附件显示名称错误。比如原名“测试.doc”的附件,发出来后看到的名字只有“.doc”。
 
这是因为swiftmailer中使用的一个basename()函数不支持中文。
对于basic版本框架,路径在/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Attachment.php这份文件中的setFile()方法,
将原来的:
$filename = basename($file->getPath());
修改为:
$basename = explode("/", $file->getPath());
$filename = iconv("gbk", "utf-8", end($basename));
原意是通过basename获取发送的附件名称,现在使用另一种方式获取发送附件的名称。
 
因为需要修改文件所处路径较深,所以建议使用IDE的全局搜索“basename”。
其实不论是什么样的PHP代码,当涉及到类似问题,就是:中文不显示或中英文混合情况下只显示了英文,都可以考虑使用全局搜索“basename”。看看是不是某段程序中使用了这个不支持中文的函数。

转载于:https://www.cnblogs.com/east2-100/p/6106921.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值