E-Mails mit VB .NET per SMTP versenden

Veröffentlicht: 08. Jul 2003 | Aktualisiert: 28. Jun 2004

Von Mathias Schiffer

Mithilfe des .NET Frameworks wird die Auslieferung einer E-Mail an einen SMTP-Server zum Kinderspiel.

Der Namespace System.Web.Mail macht Ihnen den Versand einer e-Mail per SMTP sehr einfach: Sie erzeugen ein Objekt vom Typ System.Web.Mail.MailMessage, über dessen Eigenschaften Sie Absender, Empfänger, Format, Inhalt und Anlagendateien der E-Mail definieren. Eine so zusammengestelltes MailMessage-Objekt können Sie dann über System.Web.Mail.StmpMail versenden, indem Sie in der Eigenschaft SmtpServer einen für Sie zugänglichen SMTP-Server (ggf. einen lokalen) angeben und das MailMessage-Objekt an die Send-Methode übergeben.

Um Zugriff auf diese Klassen zu erhalten benötigen Sie eine Referenz auf die .NET-Bibliothek System.Web.dll. Verwenden Sie dafür unter Visual Studio.NET einfach das "Project"-Menü, aus dem Sie den Menüpunkt "Add Reference" auswählen. In der Komponentenliste des Reiters ".NET" klicken Sie dann doppelt auf "System.Web.Dll" und klicken auf "OK" - fertig.

In Ihrem Codemodul verwenden Sie dann am besten die Imports-Direktive, um "System.Web.Mail" zu importieren: So sparen Sie sich für die weiteren Schritte eine Menge an Schreibarbeit und unlesbar langer Codezeilen.

Der folgende Code zeigt, wie einfach die Zusammenstellung der E-Mail und deren Versand funktioniert:

' Referenzieren Sie System.Web.dll 
' [Project]->[Add Reference]->[.NET] 
' und fügen Sie Ihrem Modul die folgende 
' Imports-Direktive hinzu: 
' Imports System.Web.Mail 
'  [...] 
' Neue Nachricht erzeugen: 
Dim eMail As New MailMessage 
' Eigenschaften der E-Mail festlegen 
With eMail 
  ' Absender 
  .From = "Andreas Absender <<A href="mailto:aa@aa.de">aa@aa.de</A>>" 
  ' Empfänger 
  .To = "Erich Empfaenger <<A href="mailto:ee@ee.de">ee@ee.de</A>>" 
  ' Kopienempfänger 
  .Cc = "Curt Cobain <<A href="mailto:cc1@cc.de">cc1@cc.de</A>>;
 Carl Carstens <<A href="mailto:cc2@cc.de">cc2@cc.de</A>>" 
  ' Anonyme Kopienempfänger 
  .Bcc = "B.C. Castorf <<A href="mailto:bcc@cc.de">bcc@cc.de</A>>" 
  ' Titel der e-Mail 
  .Subject = "EMail aus VB .NET mit System.Web.Mail" 
  ' Format des Texts (Text / HTML) 
  .BodyFormat = MailFormat.Text 
  ' Codierung des Texts 
  .BodyEncoding = System.Text.Encoding.Default 
  ' Text 
  .Body = "Schöne Grüße aus Köln!" 
  ' Anhänge nach Bedarf hinzufügen (hier eine einzelne Grafik) 
  .Attachments.Add(New MailAttachment("javascript:void(null);", _ 
  MailEncoding.Base64)) 
  ' Prioritätskennzeichnung der Mail 
  .Priority = MailPriority.Low  
End With 
' Die Mail über einen "offenen" SMTP-Server versenden 
SmtpMail.SmtpServer = ""   ' z.B. lokaler SMTP-Server 
SmtpMail.Send(eMail) ' MailMessage abschicken

Wenn Sie's sich noch einfacher machen wollen, können Sie mithilfe von SmtpMail auch eine eher simple Mail senden: Hierfür geben Sie, nachdem Sie die Eigenschaft SmtpServer wie gehabt belegt haben, an die Send-Methode nur Absender, Empfänger, Titel und Inhalt der Nachricht:

' Einfache Mail über einen "offenen" SMTP-Server versenden 
SmtpMail.SmtpServer = ""   ' z.B. lokaler SMTP-Server 
SmtpMail.Send("Andreas Absender <<A href="mailto:aa@ee.de">aa@ee.de</A>>", _ 
  "Erich Empfaenger <<A href="mailto:ee@ee.de">ee@ee.de</A>>", _ 
  "EMail aus VB .NET mit System.Web.Mail", _ 
  "Schöne Grüße aus Köln!")