HTML-Mails mit Bildern unter .Net erzeugen und versenden

Wer schon mal HTML-E-Mails verschickt hat kommt wohl kaum um das Problem herum, dass man auch Bilder dieser E-Mail hinzufügen möchte. Der erste und einfachste Weg ist, diese einfach auf einem Server abzulegen und dann auf diesen zu verweisen. Was ist aber wenn der Anwender keine Internetverbindung hat, der Server bzw. das Bild nicht mehr erreichbar ist? Dann sehen diese E-Mails meist sehr unschön aus.

Gerade habe ich einen netten Artikel gefunden, der Beschreibt, wie man ein Bild als E-Mailanhang mitschickt und wie man die Verbindung zwischen Bild und Anhang herstellen kann.

Hier einmal die Kurzfassung:

<IMG height=68 src="cid:015024716@24012006-255A" width=140 align=top border=0>

Die Sourceanweisung mit dem Wert "cid:015024716@24012006-255A" ist hier das interessante. Die RFC-Spezi. besagt das jeder E-Mailanhang eine eindeutige Id bekommt.

Der benötigte Sourcecode zum Versand der E-Mail:

'Zu erst mal die Imports die benötigt werden
Imports System.Net.Mail
Imports System.Net.Mime

Public Sub SendMail()

Dim objMail As New MailMessage
Dim objSender As New MailAddress("absender@server.de")
Dim objSmtpClient As New SmtpClient("smtp.server.de:8881")
Dim objEmpfaenger As New MailAddress("empfaenger@server.de")

objMail.To.Add(objEmpfaenger)
objMail.From = objSender
objMail.Subject = "Betreff der Mail"

'Damit das ganze auch funktioniert muss man angeben,
'das man die Mail im HTML-Format verschicken möchte
objMail.IsBodyHtml = True

'So jetzt zum spannenden Teil, das Bild als Attachment anfügen
Dim objFootImage As New Attachment(Server.MapPath("LOGO.gif"), _
MediaTypeNames.Image.Gif)
objFootImage.ContentId = "01"
objFootImage.ContentDisposition.Inline = True
objFootImage.TransferEncoding = TransferEncoding.Base64
objMail.Attachments.Add(objFootImage)

'Und so wird es anschließend verwendet
objMail.Body = "<img src=""cid:01"" border=0 height=68 width=140>"

'Jetzt nurnoch die Mail verschicken und fertig
objSmtpClient.Send(objMail)
End Sub

Eine ausführliche Erklärung des ganzen gibt es auf dieser Seite

Kommentar schreiben