Гугл и и поиск по форуму юзал.
Всегда пользовался связкой 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
почитай тут про правильную отправку
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');
$mime->addAttachment($content, 'application/octet-stream', $filename, false, 'base64', 'attachment', '', '', '', 'base64', 'utf-8', '', 'utf-8');
_____________