c# .net email mhtml

Enviando correos mhtml-C#



.net email (4)

Aquí hay un ejemplo usando una imagen como un recurso incrustado.

MailMessage message = new MailMessage(); message.From = new MailAddress(fromEmailAddress); message.To.Add(toEmailAddress); message.Subject = "Test Email"; message.Body = "body text/nblah/nblah"; string html = "<body><h1>html email</h1><img src=/"cid:Pic1/" /><hr />" + message.Body.Replace(Environment.NewLine, "<br />") + "</body>"; AlternateView alternate = AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html); message.AlternateViews.Add(alternate); Assembly assembly = Assembly.GetExecutingAssembly(); using (Stream stream = assembly.GetManifestResourceStream("SendEmailWithEmbeddedImage.myimage.gif")) { LinkedResource picture = new LinkedResource(stream, MediaTypeNames.Image.Gif); picture.ContentId = "pic1"; // a unique ID alternate.LinkedResources.Add(picture); SmtpClient s = new SmtpClient(); s.Host = emailHost; s.Port = emailPort; s.Credentials = new NetworkCredential(emailUser, emailPassword); s.UseDefaultCredentials = false; s.Send(message); } }

Tengo el requisito de enviar correos electrónicos que contengan texto e imágenes.
Por lo tanto, tengo un archivo .mhtml que contiene el contenido que debe enviarse por correo electrónico.

Estaba usando Chilkat para esto, pero en Outlook 2007 muestra el archivo mhtml como archivos adjuntos diferentes (html + imágenes).

¿Alguien puede sugerirme algún otro componente para enviar correos electrónicos mhtml.
Para tu información, estoy usando .Net 3.5

Además, no quiero guardar las imágenes en el servidor antes de enviarlas.

¡Gracias!


Debe establecer explícitamente el tipo MIME en multipart/related . Cambie MailMessage.Body para incluir el contenido del archivo MHTML en él. Finalmente, agregue un nuevo elemento a la colección MailMessage.AlternateViews para definir el tipo MIME correcto. El siguiente enlace de MSDN tiene un muy buen ejemplo de cómo configurarlo:

Propiedad MailMessage.AlternateViews


Yo uso la antigua clase de MailMessage nativa. Esta respuesta anterior puede apuntarle en la dirección correcta

EDITAR: Hace un tiempo construí un código similar, que captura una página HTML externa, analiza su contenido, captura todo el contenido externo (css, imágenes, etc.) y lo envía por correo electrónico, sin guardar nada en el disco.


System.Net would be the one that you are looking for.<br/> MailMessage is used to compose new mail.<br/> SMTPClient is used to send mail. NetworkCredentials would be used to attach username and password for making request to sending mail.


Llegando a tu pregunta cómo agregar imágenes.
Necesita establecer isHtml=true para MailMessage
Ya que desea enviar rutas relativas de correo en el html no funcionará como ../directory/imagename.formate
en tal caso, debe proporcionar una ruta completa a la ubicación de la imagen que es websiteUrl/directory/imagename.formate
Para obtener la Url completa dinámicamente, puede utilizar como este Request.Uri.GetLeftParth(URIPartial.Authority)+VitrtualToAbsolute.getAbsolute("~")

No estoy seguro de la última línea ya que he escrito directamente aquí. Solo necesitas usarlo y tener buena suerte ;-)