2009-04-18 8 views
1

Ich schreibe eine Windows-Anwendung, die den SMTP-Dienst zum Senden von E-Mails verwendet. Ich möchte einige dynamisch erstellte Bilder in den E-Mail-Inhalt einbetten. Wie kann ich das in .NET machen? Mein Format für E-Mails ist HTML. Ich möchte mein Bild nicht zu einem Foto-Hosting-Dienst hosten. Ich möchte es nicht als Anhang senden.Fotos in eine E-Mail einbetten

Antwort

2

Auf Ihrem Mailmessage-Objekt benötigen Sie eine alternative HTML-Ansicht zu erstellen. Dann fügen Sie LinkedResources zu Ihrer alternativen HTML-Ansicht hinzu. Die LinkedResource übernimmt den Speicherort einer Datei oder eines Stream-Objekts. Geben Sie der LinkedResource eine ID, die mit dem in Ihrer HTML-Datei übereinstimmt. alt = "" title = "" />

Mitteilung der cid sollte das Spiel:

 
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); 

Ihre HTML-Datei oder Text sollte so etwas wie dieses

< img src = "header_image cid" haben ContentID Ihrer LinkedResource.