Comment intégrer plusieurs images dans le corps de l'e-mail en utilisant .NET
Je suis en train d'écrire un programme qui envoie des e-mails pour les utilisateurs de plusieurs images (graphiques) incorporé dans le corps du message Électronique (HTML).
Quand j'ai essayé de l'échantillon situé ici..qui a bien fonctionné quand j'ai à intégrer en une seule image
http://www.systemnetmail.com/faq/4.4.aspx.
Mais, quand j'ai essayé d'incorporer plusieurs images à l'aide du code ci-dessous, aucune des images sont intégrés , au lieu de cela, ils sont envoyés comme pièces jointes.
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;
}
Des indices que ce que je suis absent?
J'ai vérifié l' .fichier htm qui est également envoyé comme pièce jointe à l'e-mail, et la source html se présente comme suit:
<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>
De sorte que le Q est comment envoyer plusieurs images dans le corps html , pas en tant que pièce jointe.
source d'informationauteur user330612
Vous devez vous connecter pour publier un commentaire.
L'autre façon d'intégrer des images dans un E-mail lors de l'utilisation de
System.Net.Mail
estJoindre l'image à partir du disque local de courrier électronique et d'attribuer un
contentID
et de les utiliser plus tard cecontentID
dans l'URL de l'image.Cela peut être fait par:
Donc, je pense compris ce que le réel problème est
Ses dans cette ligne
Comme vous pouvez le voir, mes deux points de vue sont spécifiés en tant que Text.Html, donc, le 1er est primordial le prochain et ainsi je ne vois que du texte et des images sont envoyés comme pièces jointes
J'ai apporté la modification suivante et cela a fonctionné comme prévu
Premièrevous pouvez essayer d'utiliser des Uri absolus pour les images incorporées. Voici l'exemple de RFC-2557:
Vous avez juste besoin d'attribuer LinkedResource.ContentLink propriété au lieu de ContentId.
Deuxièmevous pouvez intégrer des images directement dans votre code html avec les "données" schéma d'URL.
BTW, votre balisage html n'est pas bien formé.
Vous pourriez également être intéressé par “foreach” vs “ForEach”
si vous avez les images en ligne, la signification de l'envoi à partir d'un site hébergé, je suggère que vous venez de référence de ces images simplement en mettant leur url dans le répertoire src.
la plupart des bulletins de l'utilisation de cette méthode, et je crois qu'il est plus léger et consomme moins de ressources que l'incorporation de lui-même.
espère que cette aide
Mon alternatie:
Tout d'abord, une petite extension:
puis obtenir les noms d'images à partir du dossier:
puis de remplacer les noms d'images par cid:
où le corps est corps HTML, et par exemple,
<img src="Images/logo_shadow.png" alt="" style="width: 100%;" />
sera remplacé par<img src="cid:logo_shadow.png" alt="" style="width: 100%;" />
puis la dernière action: ajout d'images itselfs mail:
HTML: