PHPMailer обрезает имя файла вложения, когда оно начинается с греческого символа

0

Я использую 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]) является правильным.

  • 0
    Пожалуйста, опубликуйте, как выглядит кодированный (поставленный) заголовок на каждой платформе.
  • 0
    Вы пробовали CharSet = "iso-8859-7"; ?
Теги:
phpmailer

1 ответ

0
Лучший ответ

Проблема заключалась в том, что AddAttachment() использует basename() для извлечения имени файла из пути, а базовое имя - в локали.
Греческие пользователи должны добавить setlocale(LC_ALL, 'greek'); в файле class.phpmailer.php.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню