2009-04-18 4 views
1

J'écris une application Windows qui utilise le service SMTP pour envoyer des e-mails. Je veux intégrer quelques images créées dynamiquement au contenu du courrier électronique. Comment puis-je faire cela dans .NET? Mon format d'email est HTML. Je ne souhaite pas héberger mon image sur un service d'hébergement de photos. Je ne veux pas l'envoyer en pièce jointe.Embbed photos à un e-mail

Répondre

2

Sur votre objet MailMessage vous devez créer une vue HTML alternatif. Ensuite, vous ajoutez LinkedResources à votre vue HTML alternative. Le LinkedResource prend dans un emplacement d'un fichier ou un objet Stream. Donnez à la LinkedResource un ID qui correspondra à ce qui est dans votre fichier HTML.

 
MailMessage msg = CreateYourMessage(); 
msg.IsBodyHtml = true; 

string html = GetHtmlFromFileOrText(); 

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, "text/html"); 

LinkedResource img = new LinkedResource("location_of_image_or_stream_object"); 
img.ContentId = "Header_Image"; 
htmlView.LinkedResources.Add(img); 

message.AlternateViews.Add(htmlView); 

votre fichier HTML ou le texte devrait avoir quelque chose comme ça

< img src = "cid: header_image" alt = "" title = "" />

avis, le cid doit correspondre à la ContentID de votre LinkedResource.