当PHPMailer以希腊字符开头时,它正在剪切附件文件名

时间:2015-02-19 16:28:10

标签: php phpmailer

我使用 PHPMailer 附加Excel文件并通过邮件发送 创建的文件采用希腊字符“街道地址” - “月”的形式 我提出的第一个问题是附加文件的文件名字符是不可读的所以我从base64更改了phpmailer类$CharSet = 'UTF-8';。 在我的localhost(XAMPP)运行正常,邮件以正确的文件名发送 但是当我在Linux服务器上使用相同的代码时,虽然使用正确的文件名创建文件,但是当我附加它时,文件名将被剪切,直到第一个数字,拉丁字符或破折号。
该文件应该是内容和可读的。唯一的问题是文件名。
例如Οδός - Μάρτιος - > - Μάρτιος,1Οδός - Μάρτιος - > 1Οδός - Μάρτιος

        ...
        $outputFileType = 'Excel2007';  
        $outputFileName = dirname(__FILE__).'/'.$address.' - '.$period.'.xlsx';
        $objWriter->save($outputFileName);
        ...
        $mail->AddAttachment($outputFileName);

更新1
class.phpmailer.php 中的 $ attachment 属性更改为public后,我在AddAttachment函数后打印了数组。我得到了

Array ( [0] => Array (   
[0] => /var/www/vhosts/domain.com/wp-content/themes/My-Theme/Reports/Οδός 1 - Μήνας 2014.xlsx  
[1] => 1 - Μήνας 2014.xlsx   
[2] => 1 - Μήνας 2014.xlsx   
[3] => base64   
[4] => application/octet-stream   
[5] =>   
[6] => attachment   
[7] => 0 ) ) 

所以我想AddAttachment函数有一些东西。路径(附件[0])是正确的。

1 个答案:

答案 0 :(得分:0)

问题是 AddAttachment()使用 basename()从路径中提取文件名,并且basename可识别语言环境。
希腊用户必须在class.phpmailer.php文件中添加setlocale(LC_ALL, 'greek');