CSS в электронной почте

Кто-нибудь нашел хороший способ встраивания CSS в электронную почту, созданную программно. Лучший способ, который я нашел, — поместить код стиля в файл ресурсов и вызвать его в коде.

Пример был бы

Dim objBuilder
objBuilder = New StringBuilder

objBuilder.Append(Resources.SystemEmail.CSSStyle)
objBuilder.Append("My Styled Email")

Dim _Body As String = objBuilder.ToString()

Это создаст тело письма

Есть ли способ создать файл шаблона для электронной почты или лучший способ вызвать таблицу стилей в один.

Код в моем файле .resx будет

<STYLE TYPE="text/css">
<!--
body
{

    font-family: Tahoma, Verdana, Arial;
    font-size: 10pt;
    padding: 3px 0px 0px 0px;
    margin: 0px 0px 0px 0px;

}
-->
</STYLE>

И вызов этого в строку вызовет это встроенное

И с ответами ниже, чтобы отправить сообщение, я бы использовал это

Dim client As New SmtpClient("localhost")
Dim toAddr As New MailAddress(MailRecipients)
Dim fromAddr As New MailAddress(MailFrom)
Dim message As New MailMessage(fromAddress, toAddress)


message.Subject = "The Subject"
message.Body =  _Body 
message.IsBodyHtml = True
message.BodyEncoding = System.Text.Encoding.UTF8

client.Send(message)

person Paul    schedule 27.03.2009    source источник
comment
Я удивлен, что никто не предостерег вас от отправки электронной почты в формате HTML.   -  person Simon    schedule 27.03.2009
comment
Пожалуйста, объясните, будет ли это для тех немногих, кто не поддерживает это.   -  person Paul    schedule 27.03.2009
comment
Используйте premailer, чтобы переместить CSS в строку.   -  person Tamás Pap    schedule 23.02.2012
comment
Поддержка медиаселектора еще хуже. Я обнаружил, что большинство клиентов, включая очень популярные, игнорируют любой CSS с селекторами мультимедиа. Таким образом, вы не можете отправлять электронную почту в формате HTML и иметь отдельные версии для печати/отображения. Еще одна причина, по которой в электронном письме должно быть как можно меньше html, а вместо этого использовать ссылку.   -  person Myforwik    schedule 28.03.2012


Ответы (5)


Единственный способ добиться успеха — включить встроенный CSS. Включение CSS стиля заголовка документа не является последовательным или надежным.

Кроме того, убедитесь, что заголовки ваших электронных писем настроены на: Content-type: text/html; кодировка = ISO-8859-1

EDIT UTF-8 также является хорошим вариантом. КЛЮЧЕВОЙ точкой этого утверждения является то, что Content-type устанавливается в text/html.

person jerebear    schedule 27.03.2009
comment
+1 для встроенного, -1 для ISO-8859-1. Можете ли вы привести вескую причину для использования ISO-8859-1 вместо UTF-8 (в 2009 году, т.е. с повсеместной поддержкой UTF8)? - person Piskvor left the building; 27.03.2009
comment
Я с Писквором, UTF-8 хорошо поддерживается, а latin1 не предоставляет нужных символов - person David Snabel-Caunt; 27.03.2009
comment
Мы используем ISO-8859-1 во всем мире из-за различных ошибок, с которыми мы столкнулись из-за неправильного отображения наших сайтов на компьютерах пользователей. Во многом это связано с тем, как данные передаются нашим клиентом (из Word, текстовых редакторов и т. д.) - person jerebear; 27.03.2009

Вот подробное руководство о том, какие стили CSS поддерживаются каждым почтовым клиентом: http://www.campaignmonitor.com/css/

Руководство о том, что вам нужно знать: http://www.campaignmonitor.com/design-guidelines/

Существует также большая коллекция бесплатных готовых шаблонов, которые можно использовать в качестве справочных материалов: http://www.campaignmonitor.com/templates/

Наконец, та же компания предоставляет инструмент тестирования, который покажет вам, как ваше сообщение будет отображаться в каждом почтовом клиенте за разумную плату: http://www.campaignmonitor.com/testing/

person Gdeglin    schedule 27.03.2009
comment
отличный ответ и отличные справочные ссылки от людей, которые знают свою электронную почту. - person Carl Camera; 29.03.2009

К сожалению, вам нужно включить встроенный CSS в элементы, чтобы иметь какую-то неопределенную совместимость между почтовыми клиентами. Кроме того, вы должны использовать таблицы для макета (столбцы и т. д.), потому что макеты div CSS часто терпят неудачу. Прикрепленные изображения также не работают в основном для URL-адресов cid:. Thunderbird — лучший почтовый клиент с точки зрения совместимости (очевидно, поскольку он использует средство визуализации Gecko). Перспектива самая плохая.

Кроме того, используйте составной MIME с альтернативой обычного текста. Я использую базу данных для хранения шаблонов электронной почты, и есть простые текстовые и HTML-шаблоны со значениями {{replaceable}}.

person JeeBee    schedule 27.03.2009

Встроенный CSS необходим для обеспечения максимальной совместимости.

Некоторые системы, такие как MailChimp, берут ваши классы элементов, анализируют CSS и заменяют атрибуты классов встроенными стилями. Вы можете написать свой собственный код, чтобы сделать это.

person David Snabel-Caunt    schedule 27.03.2009

В дополнение к встроенному css, который все рекомендуют, имейте в виду, что электронная почта часто отображается онлайн на другой веб-странице, например, через Yahoo! Почта, Hotmail или Gmail. Вы можете себе представить, какой хаос возник бы, если бы были разрешены объявления в стиле body или случайные имена классов. Вы должны предусмотреть возможность того, что все, что не определено как встроенное, будет отброшено, хотя некоторые системы могут попытаться сохранить эти правила с непредсказуемым успехом.

person David Kolar    schedule 27.03.2009
comment
Таким образом, css в электронных письмах никогда не сделает электронное письмо одинаковым в каждой почтовой системе. Существуют ли другие варианты, например, старое кодирование html ‹font›? - person Paul; 27.03.2009
comment
Вы можете использовать стили, но не можете рассчитывать на аккуратное и эффективное объединение этих стилей в блок стилей. Используя атрибут стиля в элементах HTML, вы можете управлять свойствами шрифта. Просто ожидайте, что ваш код будет повторяющимся и многословным. Шрифты не так уж плохи, но позиционирование — это не то. - person David Kolar; 27.03.2009