[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отправка по почте файла с именем на русском
pavel
Собственно, никак не выходит:
Гугл и и поиск по форуму юзал.
Всегда пользовался связкой pear Mail+Mail_Mime


include('Mail.php');
include('Mail/mime.php');


$crlf = "\n";
$hdrs = array( 'From'=> 'robot@domain.ru', 'Subject' => 'тестовое письмо' );
$mime = new Mail_mime($crlf);
$mime->setHTMLBody('тело письма');

$mime->addAttachment("файл.xls", , "application/vnd.ms-excel");

$body = $mime->get(array('html_charset'=>'windows-1251','text_charset'=>'windows-1251','head_charset'=>'windows-1251', "text_encoding" => "8bit")
);


$hdrs = $mime->headers($hdrs);
$mail =& Mail::factory('mail');
$mail->send('test@domain.ru', $hdrs, $body);


При этом bat корректно отображает русские буквы прикрепленного файла, а веб-интерфейс яндекса не отображает имя (только расширение). mail.ru вообще начинает сама именовать файлы по порядку 1.xls 2.xls и т.д.

В исходниках письма

Content-Type: application/vnd.ms-excel;
name*=US-ASCII''%EF%F0%E0%E9%F11.xls
Content-Disposition: attachment;
filename*=US-ASCII''%EF%F0%E0%E9%F11.xls
Content-Transfer-Encoding: base64


По идее вместо US-ASCII должна быть нормальная кодировка, но как ее там поправить? Пробовал ставить вместо windows-1251 utf-8, читать файл и прикреплять прочитанный из переменной, один хрен (((

Как побороть?



Спустя 51 минута, 37 секунд (14.02.2012 - 10:50) nugle написал(а):
pavel
http://irbis-team.com/15/12?PHPSESSID=7768...61934e7ae9a077f
почитай тут про правильную отправку

Спустя 24 минуты, 42 секунды (14.02.2012 - 11:15) pavel написал(а):
Цитата (nugle @ 14.02.2012 - 11:50)
pavel
http://irbis-team.com/15/12?PHPSESSID=7768...61934e7ae9a077f
почитай тут про правильную отправку

nugle, спасибо за вменяемый класс. А им несколько файлов можно прикреплять?

Ну и в идеале хотелось бы с Mail/mime.php разобраться... Все таки стандартное расширение с тем же функционалом. Как бы там Content-Type в прикрепляемых фалах с русскими именами пофиксить?

Спустя 1 день, 3 часа, 29 минут, 15 секунд (15.02.2012 - 14:44) pavel написал(а):
Проблема решилась. Если интересно - в вызов $mime->addAttachment добавляются доп. параметры, указывающие кодировку.

$mime->addAttachment($content, 'application/octet-stream', $filename, false, 'base64', 'attachment', '', '', '', 'base64', 'utf-8', '', 'utf-8');


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.