Feedback

C# - HTML Email mit eingebettem Bild über SMTP senden

Veröffentlicht von am 10/7/2008
(3 Bewertungen)
Wie eine Text-Email über SMTP gesendet werden kann wurde schon gezeigt (zB http://dotnet-snippets.de/dns/mail-senden-mit-authentifizierung-unter-net-20-SID36.aspx).

Nachfolgendes Beispiel zeigt wie eine Email im HTML-Format mit eingebettetem Bild versendet werden kann.
using System.Net;
using System.Net.Mail;
using System.Text;

namespace HTMLEmail_mit_Bild
{
	class Program
	{
		static void Main(string[] args)
		{
			// Email erstellen:
			MailMessage mailMessage = new MailMessage(
				new MailAddress("zu@tirol.at", "Empfänger"),
				new MailAddress("gü@tirol.at", "Gü"));
			mailMessage.Subject = "Betreff";
			mailMessage.ReplyTo = new MailAddress("antwortadresse@tirol.at", "No Reply");

			// HTML-Teil der Email. Um ein Bild einzubetten muss im
			// <img>-Tag die Präfix 'cid' zum Mappen der ContentID
			// für die eingebette Ressource verwendet werden:
			AlternateView htmlView =
				AlternateView.CreateAlternateViewFromString(
					"HTML Inhalt als String",
					Encoding.UTF8,
					"text/html");

			// Eingebette Ressource:
			LinkedResource logo = new LinkedResource(
				"Pfad zum Bild das in die Email eingebettet werden soll");

			// ContentID -> siehe Kommentar oben für eingebettes Bild
			logo.ContentId = "MeineID";

			// Eingebette Ressource dem HTML-Teil hinzufügen:
			htmlView.LinkedResources.Add(logo);

			// HTML-Teil der Email hinzufügen:
			mailMessage.AlternateViews.Add(htmlView);

			// Email senden:
			new SmtpClient().Send(mailMessage);

			SmtpClient smtp = new SmtpClient("meinHost");
			smtp.Credentials = new NetworkCredential(
				"BenutzerName",
				"Passwort");
			smtp.Send(mailMessage);
		}
	}
}
Abgelegt unter Email, HTML Email, Email senden.

2 Kommentare zum Snippet

Matthias schrieb am 6/29/2010:
Hi!
Also wenn ich das richtig verstanden habe, kann im HTML-Quelltext dann aber auch nur ein Bild referenziert werden, dass sich bereits online, und somit verfügbar unter einem URL, befindet, oder? Gäbe es denn auch die Möglichkeit, das einzubettende Bild mit der Mail (als Anhang?) zu versenden? Denn wenn das möglich wäre, könnte man doch auf dieses "Hier klicken um die blockierte Grafiken anzuzeigen" im Mailprogramm des Empfängers verzichten, oder?
Koopakiller schrieb am 2/8/2013:
Für alle noch interessierten, das Bild muss nicht erst irgendwo im Internet abgelegt werden. Dieses wird direkt in der E-Mail mit verschickt.
Für das Einbinden im HTML Code muss man cid:MeinID benutzen:
< img src="cid:imgID" alt="Bilder deaktiviert?" />
 

Logge dich ein, um hier zu kommentieren!