sábado, 21 de febrero de 2009

ASP.NET - Enviar correos en formato HTML y texto a la vez

mail Todos sabemos que es mucho más agradable un email formateado con colores y con diferentes tamaños de letra e imágenes... osea, un email de tipo HTML que un correo de puro texto.
Y también sabemos que enviar un correo en formato html en ASP.NET 2.0 es muy simple... por lo que no lo voy a explicar aquí ( pssst... a menos que alguien me lo pida).

Pero, qué pasa si deseamos enviar un email en formato HTML pero el outlook del cliente ( o el programita que uses para recepcionar tus correos) no está configurado para recibir correos html?
simple conclusión: el correo llega como un montón de basura... con muy pocas posibilidades de entender algo del email.

Entonces, lo más seguro es que siempre envíes el email como formato texto correcto? correcto...
pero, se puede enviar correos de manera que puedas leer correos HTML y si no se puede leer el HTML, puedas leerlo como texto simple? claro que se puede... aquí lo vamos a demostrar.

Para ello simplemente hacemos uso de este breve procedimiento:

Sub SendEmail(ByVal strFrom As String, _
ByVal strTo As String, _
ByVal strSubject As String, _
ByVal strBodyText As String, _
ByVal strBodyHTML As String)

Dim Mail As MailMessage = New MailMessage()
Mail.From = New MailAddress(strFrom)
Mail.To.Add(strTo)
Mail.Subject = strSubject
Mail.Body = strBodyText

Dim html As AlternateView
html = AlternateView.CreateAlternateViewFromString(strBodyHTML, Nothing, "text/html")

Mail.AlternateViews.Add(html)

Dim SMTPClient As SmtpClient = New SmtpClient

SMTPClient.Host = "your_host_name"
SMTPClient.Send(Mail)

End Sub

Dense cuenta que la novedad aquí es que estoy usando la clase AlternateView de System.Net.Mail, la cual me permite precisamente crear una vista alternativa para el mensaje que estoy enviando… osea: si no funciona la vista HTML del correo que estoy enviando, entonces muestro el texto plano.

Para usar el procedimiento, simplemente haría esto:

SendEmail("sserrano@jabs.com.pe", _
"jrserrano@jabs.com.pe", _
"Subject", _
"this is the text body", _
"<p color='red'>this is the html body</p>")

Obviamente, la parte que a mi me interesa es que Uds vean las vistas alternativas (AlternativeView)… y la tremenda utilidad que tienen… osea, si uds necesitan añadir servidor de correo, usuario, password, háganlo… no hay problema.

Eso es todo.

1 comentario:

Unknown dijo...

Hola, todo esto me parece interesante pero, no tengo conocimientos sobre ASP.NET por donde empiezo? lo unico que me interesa es tener todas esta posibilidades al enviar un corre? ASP.NET es un servidor de correo? Con que debo de iniciar, en donde encunetro informacion para novatos. gracias por la respuesta.