[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отправка html рассылки с вложениями и аттачами
Arcoslov
Всем доброго дня.

Подскажите, пожалуйста, как правильно отправлять рассылку, чтобы контент одинаково корректно отображался во всех клиентах (в частности: через браузер, thunderbird, Outlook, the bat).
Рассылка содержит html с аттачами.

На сколько я понял, основная проблема в том, что нужно отправлять и html-версию как html, и html-версию как текст, иначе программы типа thunderbird ничего не поймут и не отобразят, т.к. им подавай html, отправленный как plain text (хотя в веб-морде гугла, например, всё будет работать).

Собственно, не пойму, как это реализовать. У меня приходит пустое письмо всё время, как только не пробовал.

мо код:
<?php

$eln = "\n"; //конец строки

$to = 'my_mail@gmail.com';
$from = '=?utf-8?B?'.base64_encode('Вася пупкин').'?='.' <vasya@pup.kin>';
$subject = '=?utf-8?B?'.base64_encode('сабжект письма').'?=';
$replyto = 'vasya@pup.kin';

$headers = 'MIME-Version: 1.0;'.$eln;
$headers .= 'From: '."$from".$eln;
$headers .= 'Reply-To: '."$replyto".$eln;
$headers .= 'Content-type: multipart/mixed; boundary="---mixed";'. $eln;
//начало общей части
$message='';
// начало части с альтернативными вариантами
$message.='Content-Type: multipart/alternative; boundary="---alternative"'. $eln;

//начало первого альтернативного блока (текстовый контент)
$message.='Content-Type: text/plain; charset="UTF-8"; '. $eln;
$message.='Content-Transfer-Encoding: 7bit'. $eln;
$message.=' TEXT HERE'.$eln;
//начало второго альтернативного блока (html контент)
$message.='--'.'---alternative'. $eln;
$message.='Content-Type: text/html; charset="UTF-8"; '. $eln;
$message.='Content-Transfer-Encoding: 7bit'. $eln;
$message.=' <b>HTML HERE</b>'.$eln;
//окончание части альтернативных блоков
$message.='--'.'---alternative--'. $eln;

// продолжение общей части
$message.='--'.'---mixed'. $eln;

//начало аттача
$message.='Content-Type: application/octet-stream; name="N.jpg"'. $eln;
$message.='Content-Transfer-Encoding: base64'.$eln;
$message.='Content-Disposition: attachment; filename="N.jpg"'.$eln;
$message.= chunk_split(base64_encode('N.jpg')).$eln;

//конец общей части
$message.='--'.'---mixed--'. $eln;

if (mail ($to, $subject, $message, $headers)){echo 'good!';}else{echo 'bad';};

?>


Вот что приходит:

Content-type: multipart/mixed; boundary="---mixed";

Content-Type: multipart/alternative; boundary="---alternative"
Content-Type: text/plain; charset="UTF-8";
Content-Transfer-Encoding: 7bit
TEXT HERE
-----alternative
Content-Type: text/html; charset="UTF-8";
Content-Transfer-Encoding: 7bit
<b>HTML HERE</b>
-----alternative--
-----mixed
Content-Type: application/octet-stream; name="N.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="N.jpg"


-----mixed--




Собственно, в браузере вижу пустое письмо, к которому прикреплён джипег как аттач, но он имеет размер 0 bytes.
Текста TEXT HERE или <b>HTML HERE</b> я не вижу.

1) что я делаю не так?
2) я правильно понимаю, что после строки:
$headers .= 'Content-type: multipart/mixed; boundary="---mixed";'. $eln;
не нужно задавать $message='--'.'---mixed'.$eln ?
так же и про открытие любого нового блока.
Быстрый ответ:

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