Feedback

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

Veröffentlicht von am 07.10.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.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

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 29.06.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 08.02.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!