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 (siehe Bild 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.
Bild 1: Setzen eines Verweises auf die Mail-Komponente
Bild 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 (siehe Bild 2).
Die folgenden Eigenschaften der Klasse clsSendMail gestalten die E-Mail professioneller:
Weitere Empfänger
Eine E-Mail kann mehr als einen Empfänger haben. Wenn mehrere gleichberechtigte Empfänger die Mail erhalten sollen, geben Sie diese als Zeichenkette für die Eigenschaften Recipient beziehungsweise RecipientName an, wobei Sie die einzelnen Empfänger durch Semikolons voneinander trennen.
Sollen weitere Empfänger nur eine Kopie („CC“) erhalten, fügen Sie diese Empfänger mit der Eigenschaft CCRecipient beziehungsweise CCDisplayName hinzu – auch hier geben Sie mehrere Empfänger durch Semikolon getrennt an.
Wenn Sie eine Kopie an jemanden versenden möchten, ohne dass die anderen Empfänger dies erkennen können, verwenden Sie BCCRecipient.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo