Gmail неправильно отображает html-текст

Я сделал скрипт, который отправляет пользователям сообщения электронной почты в формате html. Однако в Gmail я не могу заставить работать цвет шрифта. Это работает для первого сообщения, но все последующие сообщения в беседе отображаются фиолетовым цветом.

Это происходит только тогда, когда я получаю строки из файлов .txt, используя file_get_Contents()). Если я заполняю переменные строками из своего класса или ввожу сообщение напрямую, а не с использованием переменных, gmail нормально отображает html. Я не обнаружил никаких проблем с другими веб-почтой или почтовыми клиентами. Для фактической отправки почты я пробовал оба phpmailer и обычная функция mail().

    $message = "<html><body><font face='Georgia, Times' color='red'>";
    $message .= "<p>Beste " . $this->name . "</p>";
    $message .= "<p>" . $parPersonal . "</p>";
    $message .= "<p>" . $parOne . "</p>";
    $message .= "<p>" . $parTwo . "</p>";
    $message .= "<p>" . $parThree . "</p></font></body></html>";

Скриншот из gmail:

https://imgur.com/h8cLL

Кстати, этот скрипт обычно отправляет только 1 электронное письмо 1 человеку за раз, и эта проблема не должна появляться, в настоящее время он просто отправляет письмо на мою собственную учетную запись gmail для целей тестирования. Однако мне очень любопытно, как я могу исправить это для будущих целей.


person M.Smit    schedule 28.05.2012    source источник


Ответы (2)


Скорее всего это связано с неправильной вложенностью тега <font>.

Тег <font> — это встроенный элемент, который должен быть вложен в ваши блочные элементы, такие как теги <p>.

Это приводит к очень запутанному HTML, но так обстоит дело с довольно архаичными движками html, используемыми почтовыми клиентами.

В наши дни вы можете получить хорошее освещение, используя встроенные стили в своих элементах (но отдельные блоки <style> все еще плохо покрыты). Посмотрите этот замечательный ресурс от CampaignMonitor, чтобы узнать, что вы можете использовать: http://www.campaignmonitor.com/css/

person tomwalsham    schedule 28.05.2012
comment
Спасибо, это работает. Может ли кто-нибудь объяснить мне, почему мой код работал, когда я не использовал внешние файлы для получения текста для своего электронного письма? - person M.Smit; 28.05.2012
comment
Это немного сложнее отлаживать удаленно, но я бы посоветовал вам взглянуть на а) кодировку символов текстовых файлов б) Возможно, содержимое текстового файла использует другую новую строку, чем когда вы вводите вручную - \r\n по сравнению с \n, например . Это может вызывать некоторые странные проблемы с переносом, нарушая html? Все слегка умозрительно. - person tomwalsham; 29.05.2012

Не используйте тег <font>. Именно так вы оформляли html в 1995 году. Вместо этого попробуйте использовать встроенные стили:

<p style="color: red; font-family: Georgia, Times">

В общем, к вашему сведению. Многие почтовые клиенты удаляют информацию таблицы стилей из электронных писем, основанных на html. Если у вас есть определенная область, которую вы хотите раскрасить, вы можете рассмотреть возможность использования изображений.

Тем не менее, вы также должны знать, что встроенные стили / чрезмерное использование сильных тегов, которые предназначены для выделения ссылки CLICK ME, могут увеличить общий балл охвата вашего сообщения электронной почты.

person Jesse    schedule 28.05.2012
comment
это недопустимый цветовой стиль, который уничтожит весь блок стиля. - person Marc B; 28.05.2012