2009-03-27 22 views
8

Alguien ha encontrado una buena manera de insertar CSS en un correo electrónico producido programáticamente. La mejor manera que he encontrado es poner el código de estilo en un archivo de recursos y llamarlo al código.CSS en el correo electrónico

Un emample sería

Dim objBuilder 
objBuilder = New StringBuilder 

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

Dim _Body As String = objBuilder.ToString() 

Esto sería construir el cuerpo del correo electrónico

¿Hay alguna manera de hacer un archivo de plantilla de un correo electrónico o una mejor manera de llamar a una hoja de estilo en uno .

El código en mi archivo .resx sería

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

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

} 
--> 
</STYLE> 

Y llamando a esto en la cadena podría llamar a esta línea

Y con las respuestas a continuación para enviar el mensaje me gustaría utilizar este

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) 
+0

Me sorprende que nadie te haya advertido sobre el envío de correos electrónicos HTML. – Simon

+0

Por favor explique, esto sería para los pocos que no lo apoyan. – Paul

+0

El soporte del selector de medios es aún peor. He descubierto que la mayoría de los clientes, incluidos los más populares, ignorarán cualquier CSS que tenga selectores de medios. Por lo tanto, no puede enviar correos electrónicos HTML y tener versiones separadas de impresión/visualización. Otra razón para tener tan poco html en el correo electrónico como sea posible, y en su lugar usar un enlace. – Myforwik

Respuesta

13

La única forma en que hemos tenido éxito es incluir el CSS en línea. Estilo de encabezado de documento La inclusión de CSS no es consistente o confiable.

Además, asegúrese de que los encabezados de su correo electrónico estén configurados en: Tipo de contenido: text/html; charset = ISO-8859-1

EDITAR UTF-8 es también una buena opción. El punto clave de esa declaración es que el tipo de contenido se establece en texto/html

+0

+1 para en línea, -1 para ISO-8859-1. ¿Puede dar una buena razón para usar ISO-8859-1 sobre UTF-8 (en 2009, es decir, con soporte UTF8 ubicuo)? – Piskvor

+0

Estoy con Piskvor, UTF-8 está bien soportado y latin1 no proporciona los caracteres necesarios –

+0

Utilizamos ISO-8859-1 globalmente debido a varios errores que hemos encontrado a través de nuestros sitios que se procesan incorrectamente en las computadoras de las personas. Mucho de esto tiene que ver con la forma en que los datos son enviados por nuestro cliente (de Word, editores de texto, etc.) – jerebear

1

CSS en línea es imprescindible para garantizar la máxima compatibilidad.

Algunos sistemas como MailChimp tomarán sus clases de elemento, analizarán su CSS y reemplazarán los atributos de clase con estilos en línea. Podrías escribir tu propio código para hacer esto.

4

Desafortunadamente necesita incluir el CSS en línea en los elementos para tener una compatibilidad vaga entre los clientes de correo electrónico. Además, debe usar tablas para el diseño (columnas, etc.) porque los diseños de div CSS a menudo fallan. Las imágenes adjuntas también fallan principalmente para cid: URLs. Thunderbird es el mejor cliente de correo para la compatibilidad (obviamente, ya que utiliza el renderizador Gecko). Outlook es lo peor.

Además, use mime multiparte con una alternativa de texto sin formato. Utilizo una base de datos para almacenar plantillas de correo electrónico, y hay texto plano y plantillas html, con {{replaceable}} valores.

1

Además de la CSS en línea que todo el mundo está recomendando, tenga en cuenta que el correo electrónico es a menudo representada en línea dentro de otra página Web, como por ejemplo a través de Yahoo! Correo, Hotmail o Gmail. Puede imaginar el caos que se produciría si se permitieran las declaraciones de estilo body o los nombres de clase aleatorios. Debe planificar la posibilidad de que todo lo que no esté definido en línea se descarte, aunque algunos sistemas pueden intentar preservar estas reglas con éxito impredecible.

+0

Así que los correos electrónicos nunca harán que el correo electrónico sea el mismo en cada sistema de correo. ¿Hay otras opciones, por ejemplo, old hat html? codificando – Paul

+0

Puede usar estilos, pero no puede contar con reunir esos estilos de forma clara y eficiente en un bloque de estilos. Usando el atributo de estilo en los elementos HTML, puede controlar las propiedades de la fuente. Solo espere que su código sea repetitivo y detallado. Las fuentes no son tan malas, pero el posicionamiento es un no-go. –

7

Aquí es una guía completa sobre el que los estilos CSS son soportados por cada cliente de correo electrónico: http://www.campaignmonitor.com/css/

una guía sobre lo que se necesita saber: http://www.campaignmonitor.com/design-guidelines/

También hay una gran colección de libres plantillas preconstruidas que puede utilizar como referencia: http://www.campaignmonitor.com/templates/

Finalmente, la misma empresa proporciona una herramienta de prueba que le mostrará cómo se mostrará su mensaje en cada cliente de correo electrónico por una tarifa razonable: http://www.campaignmonitor.com/testing/

+0

excelente respuesta y excelentes enlaces de referencia de personas que conocen su correo electrónico. –

Cuestiones relacionadas