
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
[x]
Дата
|
|
![]() Unregistered ![]() |
Всем доброго дня.
Подскажите, пожалуйста, как правильно отправлять рассылку, чтобы контент одинаково корректно отображался во всех клиентах (в частности: через браузер, thunderbird, Outlook, the bat). Рассылка содержит html с аттачами. На сколько я понял, основная проблема в том, что нужно отправлять и html-версию как html, и html-версию как текст, иначе программы типа thunderbird ничего не поймут и не отобразят, т.к. им подавай html, отправленный как plain text (хотя в веб-морде гугла, например, всё будет работать). Собственно, не пойму, как это реализовать. У меня приходит пустое письмо всё время, как только не пробовал. мо код: <?php Вот что приходит:
Собственно, в браузере вижу пустое письмо, к которому прикреплён джипег как аттач, но он имеет размер 0 bytes. Текста TEXT HERE или <b>HTML HERE</b> я не вижу. 1) что я делаю не так? 2) я правильно понимаю, что после строки: $headers .= 'Content-type: multipart/mixed; boundary="---mixed";'. $eln; не нужно задавать $message='--'.'---mixed'.$eln ? так же и про открытие любого нового блока. Это сообщение отредактировал Arcoslov - 15.12.2014 - 15:38 |
|
![]() |
|
![]() ![]() Глухой нуб ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Администратор ![]() Сообщений: 17423 Пользователь №: 6543 На форуме: Карма: 327 Трезвый : 14 лет, 4 месяца, 21 день ![]() |
Вот тут посмотри, может что полезное найдется.
-------------------- Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право. Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках. ![]() |
![]() Unregistered ![]() |
Спасибо, но чё-т не помогло. |
||
|
![]() |
|
![]() ![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 32 Пользователь №: 40641 На форуме: Карма: 3 ![]() |
Arcoslov, используй Swiftmailer.
Он умеет аттачить файлы, "внедрять" (embed) картинки так, что почтовые программы корректно из отображают. Начни читать здесь: http://swiftmailer.org/docs/messages.html#attaching-files |
![]() Unregistered ![]() |
Да я уж так и понял, что надо использовать phpmailer или что-то такое )) однако, хочется разобраться в ситуации, а не убегать от проблемы ) |
||
|
![]() |
[x]
Дата
|
![]() ![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 32 Пользователь №: 40641 На форуме: Карма: 3 ![]() |
Я тут нагуглил работающий вариант:
<?php Отсюда видно, что все заголовки нужно передавать именно как заголовки, т.е. в $headers, а не $message. А $message получается вообще пустой. И вот здесь: $message.= chunk_split(base64_encode('N.jpg')).$eln; Нужно передавть содердание файла, а не название. (если это не "опечатка") Это сообщение отредактировал F**k - 15.12.2014 - 21:01 |
![]() Unregistered ![]() |
F**k, вариант вроде фунцихлирует, но есть одно НО.
Получатель в почтовых клиентах получает почту, в которой заблочены картинки, там есть опция типа если вы уверены, дозагрузить изображения. В случае, если отправлять вёрстку из thunderbird, то клиент, не смотря на это предупреждение, увидит все картинки за исключением фонов таблиц. То есть, человек, не разрешив ещё дозагрузить все картинки , уже видит красивую рассылку. А если отправлять этим скриптом, то до загрузки картинок клиент вообще не увидит никаких картинок, это дичайшее уродство. Какой-то сложный код генерит этот загадочный сандербёрд.. swiftmailer умеет отправлять так же кошерно, как и thunderbird? По поводу файла - да, очепятка, заметил уже.. почикал нечаянно. Это сообщение отредактировал Arcoslov - 16.12.2014 - 23:49 |
|
![]() |
|
![]() ![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 32 Пользователь №: 40641 На форуме: Карма: 3 ![]() |
Swiftmailer умеет – http://swiftmailer.org/docs/messages.html#...ine-media-files
А в примере выше картинка именно аттачится к письму, клиенты должны ее показывать как вложение. |
![]() Unregistered ![]() |
лады, спасибо.
Ещё позаморачиваюсь немного и буду курить свифтмейлер ![]() Это сообщение отредактировал Arcoslov - 17.12.2014 - 12:59 |
|
![]() Unregistered ![]() |
F**k, покурил я свифтмейлер.
ничего особенного (как и ничего, решающего мою проблему) я там не нашёл. если он отправляет text/html, то оно в клиенте с неразблоченными картинками смотрится точно так же, как отправляет скрипт, который ты откопал. Не нашёл я какой-то уникальной настройки, чтобы отправлял так круто, как thunderbird. Подскажешь? )) в свифтмейлере есть : 1) setBody('<b>html text</b>', 'text/html'); 2) addPart('text', 'text/plain'); Первое боди, как я понял, является предпочтительным для длиента, а альтернативное, для тех случаев, если основное не катит. Вот, собственно, и всё.. Это сообщение отредактировал Arcoslov - 3.01.2015 - 01:09 |
|
![]() |
[x]
Дата
|
![]() ![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 32 Пользователь №: 40641 На форуме: Карма: 3 ![]() |
Ну вот смотри как у меня работает такой пример:
<?php В итоге я получается письмо с HTML и plain-text частяями. В HTML "внедрено" изображение. HTML: ![]() Plain-text: ![]() И вот так оно отображается в Thunderbird: ![]() Ну и само письмо на всякий случай. P.S. То есть, я предполагаю, что именно "внедренные" картинки почтовый клиенты показывают "сразу", а по остальным могут возникнуть вопросы "дозагрузить?" и тд. Это сообщение отредактировал F**k - 3.01.2015 - 06:25 |
![]() Unregistered ![]() |
Хвала богам! Твоё предположение полностью верное! А то я уже совсем замучался. Действительно, теперь получатель видит рассылку полностью с картинками ещё до нажатия кнопки "дозагрузить изображения". Всё работает просто отлично! Конечно, остаётся не понятным, что это за способ такой, как он так эмбедит картинки хитро.. ну, как я предполагаю, картинки копируются\кодируются в тело письма, и получатель не видит их как прикреплённые файлы, а в самом письме ссылка на картинку выглядит так: <img class="CToWUd" alt="logo" src="?ui=2&ik=ee4041a8c7&view=fimg&th=14ab155a5a9e11c7&attid=0.1&disp=emb&attbid=ANGjdJ8lsZoB7G9wA2zxAq0uReAXG9adp84zpWm9bKbiuM4u4BItZ6yWFrzltjI54qbgat3WImZWuicDSoL8hX4PLjprD-0lVNS9PGfs6i0f6nHcJll0Ugxpd7j6fdo&sz=w244&ats=1420321588750&rm=14ab155a5a9e11c7&zw&atsh=1" style="display:block;width:122px"> причём, параметр class я ему не задавал, оно само при эмбеде так работает. я так смотрю, результатом функции $message->embed(Swift_Image::fromPath('../image.jpg')) является простая строка вида cid:adf8daced8b0b1f01e2d1c6e25dcac8d@test5.localhost, и это подставляется в src= " ... ". Интересно разобраться, как самому эмбедить, без свифтмейлера ;) |
||
|
![]() |
![]() ![]() ![]() |