当附件文件名以希腊字符开头时,PHPMailer正在剪切该文件名
我使用PHPMailer附加Excel文件并通过邮件发送它们。 创建的文件采用希腊字符的街道地址月格式。 我遇到的第一个问题是附加文件的文件名字符不可读,因此我更改了phpmailer类$CharSet='UTF-8';从base64开始。 在我的localhostXAMPP上运行良好,邮件以正确的文件名发送。 但是,当我在Linux服务器上使用相同的代码时,尽管文件是用正确的文件名创建的,但当我附加它时,文件名被剪切到第一个数字、拉丁字符或破折号。 文件的内容和可读性与预期一致。唯一的问题是文件名。 e、 g.⑾⑾⑾⑾⑾⑾⑾⑾⑾,1⑾⑾⑾⑾⑾⑾⑾⑾⑾⑾⑾->1⑾⑾⑾⑾⑾⑾⑾⑾⑾⑾当附件文件名以希腊字符开头时,PHPMailer正在剪切该文件名,php,phpmailer,Php,Phpmailer,我使用PHPMailer附加Excel文件并通过邮件发送它们。 创建的文件采用希腊字符的街道地址月格式。 我遇到的第一个问题是附加文件的文件名字符不可读,因此我更改了phpmailer类$CharSet='UTF-8';从base64开始。 在我的localhostXAMPP上运行良好,邮件以正确的文件名发送。 但是,当我在Linux服务器上使用相同的代码时,尽管文件是用正确的文件名创建的,但当我附加它时,文件名被剪切到第一个数字、拉丁字符或破折号。 文件的内容和可读性与预期一致。唯一的问题是文
...
$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函数中有一些东西。pathattachment[0]是正确的。问题在于AddAttachment使用basename从路径中提取文件名,并且basename支持区域设置。
希腊用户必须添加setlocaleLC_ALL“希腊”;在class.phpmailer.php文件中。;?