Mail versenden mit SMTP und VBA

Zusammenfassung

Lernen Sie eine kostenlose VB-DLL kennen, die alle notwendigen Funktionen zum Versenden von E-Mails enthält.

Techniken

SMTP, VBA

Voraussetzungen

Access 97 und höher

Beispieldatenbank

vbSendMail.zip

André Minhorst, Duisburg

Zum Versenden von E-Mails aus einer Access-Datenbank brauchen Sie kein Outlook: Das können Sie mit einer kleinen .dll-Datei gemütlich per VBA erledigen. Wozu Sie eine solche Funktion einsetzen können, haben wir Ihnen etwa mit dem Serienmail-Tool in Ausgabe 4/2006 gezeigt. Eine passende und noch dazu freie Funktionssammlung stellen wir Ihnen im vorliegenden Artikel vor.

Die hier vorgestellte Komponente finden Sie unter der Adresse http://www.freevbcode.com/ShowCode.AspID=109.

Das Paket enthält neben der Datei vbSendMail.dll auch noch den Quellcode in Form eines VB-Projekts – eigenen Anpassungen steht also nichts im Wege.

Neben der genannten DLL benötigen Sie noch die Datei mswinsck.ocx – sollte diese nicht auf Ihrem System installiert sein, verwenden Sie das in den Beispieldateien enthaltene Setup. Es installiert sowohl die vbSendMail.dll als auch mswinsck.ocx in das Verzeichnis c:\\windows\\system32.

Registrieren der Komponente

Bevor Sie die Mail-DLL in Betrieb nehmen, müssen Sie diese registrieren.

Das erledigen Sie am schnellsten im Ausführen-Dialog (Start/Ausführen) mit folgender Anweisung:

Regsvr32 <Pfad>\\vbSendMail.dll

Alternativ verwenden Sie eine Batch-Datei mit dem folgenden Inhalt, die sich im gleichen Verzeichnis wie die vbSendMail.dll befinden muss:

Regsvr32 vbSendMail.dll

Um die Bibliothek in Access und damit innerhalb von VBA verfügbar zu machen, legen Sie einen Verweis auf die Bibliothek an (s. Abb. 1).

Zum Versenden einer einfachen Mail sind nur wenige Zeilen Code nötig. Um die Ereignisse der Komponente abzufangen (dazu später mehr), müssen Sie diese in einem Klassenmodul deklarieren, wobei es sich auch um ein Formularmodul handeln kann.

Abb. 1: Setzen eines Verweises auf die Mail-Komponente

Abb. 2: Eine einfache, per VBA versendete E-Mail

Quellcode 1: Versenden einer einfachen Text-E-Mail

Public Sub MailSenden()
    Set objSendMail = New vbSendMail.clsSendMail
    With objSendMail
        .SMTPHost = "<Smtp-Server>"
        .from = "<Absender-E-Mail>"
        .Recipient = "<Empfänger-E-Mail>"
        .Subject = "Beispielmail"
        .Message = "Dies ist eine Testmail."
        .Send
    End With
End Sub

Für die ersten Beispiele reicht jedoch ein Standardmodul, das Sie von Access aus mit der Schaltfläche Neu auf der Registerseite Module des Datenbankfensters anlegen.

Hier deklarieren Sie nun eine Objektvariable namens objSendMail (in einer Zeile):

Private objSendMail As vbSendMail.clsSendMail

Die Beispielprozedur aus Quellcode 1 zeigt eine sehr einfache Möglichkeit zum Versenden einer E-Mail per VBA.

Wenn Sie die Platzhalter mit richtigen Daten füllen und der angegebene SMTP-Server keine Authentifizierung verlangt, können Sie mit diesen wenigen Zeilen Code bereits eine E-Mail versenden.

Dies sind aber auch nur die notwendigsten Daten, die zum Versenden einer E-Mail erforderlich sind (s. Abb. 2).

Die folgenden Eigenschaften der Klasse clsSendMail gestalten die E-Mail professioneller:

  • FromDisplayName: Fügt einen Absendernamen hinzu.
  • RecipientName: Fügt den Empfängernamen hinzu.
  • ReplyToAddress: Gibt eine alternative Adresse für Antwort-Mails an.
  • AsHTML: Stellen Sie diese Eigenschaft auf True, wenn Sie den Inhalt der E-Mail mit HTML-Auszeichnungen formatieren möchten.
  • Priority: Mit dieser Eigenschaft versehen Sie eine E-Mail mit einer Priorität (Dringlichkeit) wie HIGH_PRIORITY oder LOW_PRIORITY.
  • Receipt: Legt fest, ob der Empfänger zum Absenden einer Empfangsbestätigung aufgefordert wird.
  • Weitere Empfänger

    Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar