Я использую PHPMailer для прикрепления файлов Excel и отправки их по почте.
Созданные файлы находятся в форме "адрес улицы" - "месяц" в греческих символах.
Первая проблема, с которой я столкнулся, заключалась в том, что прикрепленные имена файлов файлов не читались, поэтому я изменил класс $CharSet = 'UTF-8';
от base64.
На моем localhost (XAMPP) работает хорошо, и почта отправляется с правильным именем файла.
Но когда я использую тот же код на Linux Server, хотя файл создается с правильным именем файла, когда я его прикрепляю, имя файла сокращается до первого числа, латинского символа или тире.
Файл, как предполагается, находится в содержании и читабельности. Единственная проблема - это имя файла.
например Οδός - Μάρτιος → - Μάρτιος, 1 Οδός - Μάρτιος → 1 Οδός - Μάρτιος
...
$outputFileType = 'Excel2007';
$outputFileName = dirname(__FILE__).'/'.$address.' - '.$period.'.xlsx';
$objWriter->save($outputFileName);
...
$mail->AddAttachment($outputFileName);
ОБНОВЛЕНИЕ 1
После изменения свойства $ attachment в class.phpmailer.php публике я напечатал массив после функции 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]) является правильным.
Проблема заключалась в том, что AddAttachment() использует basename() для извлечения имени файла из пути, а базовое имя - в локали.
Греческие пользователи должны добавить setlocale(LC_ALL, 'greek');
в файле class.phpmailer.php.
CharSet = "iso-8859-7";
?