Estoy escribiendo un programa que envía correos electrónicos a usuarios con múltiples imágenes (gráficos) incrustadas en el cuerpo del mensaje de correo electrónico (HTML).Cómo incrustar varias imágenes en el cuerpo del correo electrónico usando .NET
Cuando probé la muestra que se encuentra aquí ... que funcionó bien cuando tengo que incrustar una sola imagen http://www.systemnetmail.com/faq/4.4.aspx.
Pero, cuando intenté incrustar varias imágenes usando el siguiente código, ninguna de las imágenes se está incrustando, sino que se envían como archivos adjuntos.
public MailMessage MailMessage(Metric metric, DateTime date)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("[email protected]", "User1");
msg.To.Add(new MailAddress("[email protected]"));
msg.Subject = "Trend for metric: " + metric.Name;
msg.IsBodyHtml = true;
// Generate the charts for the given metric
var charts = this.GenerateCharts(metric, date);
int i = 0;
string htmlBody = "<html><body>";
List<LinkedResource> resources = new List<LinkedResource>();
foreach (var chart in charts)
{
string imageTag = string.Format("<img src=cid:chart{0} /><br>", i);
htmlBody += imageTag;
LinkedResource graph = new LinkedResource(chart.Value, "image/jpeg");
graph.ContentId = "chart" + i;
resources.Add(graph);
i++;
}
htmlBody += "</body></html>";
// Alternate view for embedded images
AlternateView avText = AlternateView.CreateAlternateViewFromString(metric.Name, null, MediaTypeNames.Text.Html);
AlternateView avImages = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
// Add all the images as linked resources
resources.ForEach(x => avImages.LinkedResources.Add(x));
// Add the views for image
msg.AlternateViews.Add(avText);
msg.AlternateViews.Add(avImages);
return msg;
}
¿Alguna pista que me falta? he comprobado el archivo .htm que también se envía como archivo adjunto con el correo electrónico, y la fuente html se ve de la siguiente manera:
<html>><body><img src=cid:chart0 /><br><img src=cid:chart1 /><br><img src=cid:chart2/><br><img src=cid:chart3 /><br><img src=cid:chart4 /><br></body></html>
Así que el Q es cómo enviar varias imágenes en el cuerpo HTML, no como archivo adjunto.
posible duplicado de [Enviar un correo electrónico con una imagen incrustada en el cuerpo desde C#] (http://stackoverflow.com/questions/1921275/sending-an-email-with-an-image-embedded-in-the- body-from-c) –