Sprache: C#
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);
}
}
}
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);
}
}
}
Alte URL:
/snippet/html-email-mit-eingebettem-bild-ueber-smtp-senden/988
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?
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 [b]cid:MeinID[/b] benutzen:
[code]< img src="cid:imgID" alt="Bilder deaktiviert?" />[/code]