zoukankan      html  css  js  c++  java
  • Yii Swiftmailer 发送中文附件

    所用的是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”。看看是不是某段程序中使用了这个不支持中文的函数。
  • 相关阅读:
    Firefly 介绍
    9秒社团跨平台开发引擎CrossApp宣布正式开源
    页面置换算法
    Selenium
    C++虚函数、虚继承
    链表题目
    二叉树分类
    求连续子数组的最大和
    拓扑排序
    二叉树题目
  • 原文地址:https://www.cnblogs.com/east2-100/p/6106921.html
Copyright © 2011-2022 走看看