Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Wenn Sie eine E-Mail über Outlook mit VBA versenden, können Sie dies auf zwei Arten erledigen – durch direktes Versenden oder durch Anzeigen der Mail und anschließendes Anklicken der Senden-Schaltfläche. In beiden Fällen gibt es keine von VBA auswertbare Eigenschaft, die Informationen über den Versandstatus der E-Mail liefert. Und wenn Sie die per VBA gefüllte E-Mail vor dem Versand noch zur Kontrolle anzeigen, kann der Benutzer noch änderungen am Inhalt vornehmen, die nicht in der Datenbank gespeichert werden. Dieser Artikel zeigt, wie Sie sich den Versand bestätigen lassen und gleichzeitig den versendeten Inhalt erfassen können.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1306_MailSicherVersenden.mdb.
Voraussetzungen
Die hier vorgestellten Techniken funktionieren nur mit neueren Outlook-Versionen (ab Outlook 2007).
Ausgangssituation
Im Artikel Berichte per E-Mail versenden aus Ausgabe 5/2013 haben Sie erfahren, wie Sie Outlook-Mails per VBA erstellen und anzeigen, bevor Sie diese verschicken (siehe Bild 1).
Bild 1: Erstellen einer E-Mail per VBA und Anzeige in der Outlook-Vorschau
Betreff und Inhalt der E-Mail sowie weitere Eigenschaften wurden bereits in einem Access-Formular eingegeben, die Anzeige der Outlook-Mail vor dem Versenden soll lediglich der Kontrolle dienen.
Es sind jedoch auch noch andere Szenarien denkbar: Beispielsweise könnten Sie aus einem Kundenformular heraus eine E-Mail an den aktuell angezeigten Kunden erstellen. Sie würden dann direkt die E-Mail mit Outlook anzeigen und nicht erst ein Access-Formular erstellen, dass prinzipiell die gleichen Felder wie Outlook anzeigt. Der Benutzer trägt dann Betreff und Inhalt der E-Mail ein und versendet diese.
Im Gegensatz zur vorherigen Variante, wo wir die E-Mail bereits in einem Access-Formular erstellt und dabei gleichzeitig die Inhalt in der an das Formular gebundenen Tabelle gespeichert haben, werden Betreff, Inhalt et cetera nun nicht in der Datenbank gespeichert.
Aber auch bei der Variante, bei der die Mail im Formular erstellt und in der Tabelle gespeichert wird, kann der Benutzer ja noch änderungen an der E-Mail vornehmen, wenn diese vor dem Versenden noch in Outlook angezeigt wird. Das heißt, dass die Tabelle mit den E-Mails unter Umständen gar nicht den tatsächlich gesendeten Inhalt enthält.
Es wäre also für beide Fälle interessant, vor dem Versenden der E-Mail über die Senden-Schaltfläche der E-Mail in Outlook noch einmal den Inhalt einzulesen und in die Datenbank zu übertragen.
Wie aber können wir dies bewerkstelligen Hilfe bietet das Objektmodell von Outlook ab der Version 2007. Genau wie die Access-Objekte wie Formulare, Steuerelemente oder Berichte bieten auch die Outlook-Objekte Ereignisse an, für die Sie Ereignisprozeduren implementieren können. Diese werden durch Ereignisse wie Open, Send et cetera ausgelöst. Eine übersicht etwa aller Ereignisse des MailItem-Objekts liefert der Objektkatalog, den Sie mit F2 einblenden.
Dort wählen Sie die Bibliothek Outlook aus und selektieren in der Liste links das zu untersuchende Objekt. Auf der rechten Seite finden Sie dann alle Eigenschaften, Methoden und Ereignisse des jeweiligen Objekts (siehe Bild 2). Wenn Sie dort im Kontextmenü den Eintrag Elemente gruppieren aktivieren, gruppiert der Dialog die Einträge nach Eigenschaften, Methoden und Ereignissen.
Bild 2: Ereignisse des MailItem-Objekts in Outlook
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo