Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Auf das Versenden von E-Mails über Outlook sind wir bereits in Ausgabe 1/2012 detailliert eingegangen. Manchmal ergeben sich aber in Projekten interessante Variationen, die ich Ihnen nicht vorenthalten möchte. In diesem Falle soll eine Kundendatenbank es ermöglichen, E-Mails mit Adresse und Text vorzubereiten und diese dann vor dem Versenden anzuzeigen. Der Benutzer kann dort noch änderungen vornehmen und die Mail dann absenden. Der Clou ist, dass die geänderten Texte für Betreff und Inhalt der E-Mail vor dem Versenden noch schnell zwecks Dokumentation der Kommunikation in der Datenbank gespeichert werden sollen.
Dieser Beitrag liefert also zwei Neuerungen gegenüber dem Beitrag Mails senden mit Outlook (www.access-im-unternehmen.de/819):
Erstens öffnen wir die versandbereite E-Mail noch, damit Sie diese kontrollieren und gegebenenfalls änderungen darin vornehmen können.
Zweitens sollen die an der E-Mail vorgenommenen änderungen vor dem Versenden der E-Mail noch eingelesen und weiter verwertet werden – beispielsweise, um die an Kunden versendeten E-Mails für spätere Einsichtnahme in der Datenbank zu speichern.
Die Beispieldatenbank enthält ein Formular, das Daten aus den beiden Tabellen tblKunden und tblKommunikation anzeigt (s. Bild 1).

Bild 1: Formular der Beispieldatenbank zum Versenden von E-Mails
Die Daten der Tabelle tblKunden erscheinen im Hauptformular frmKunden, die über das Fremdschlüsselfeld KundeID mit der Tabelle tblKunden verknüpften Datensätze der Tabelle tblKommunikation im Unterformular sfmKommunikation. Bild 2 zeigt das Datenmodell der Beispieldatenbank.

Bild 2: Datenmodell der Beispieldatenbank
Die Tabelle tblKommunikation soll die wichtigsten Daten der gesendeten E-Mails erfassen, also den Absender, den Empfänger, den Wert des Feldes KundeID, unter dem die E-Mail versendet wurde, das Datum, den Betreff und den Inhalt der E-Mail.
Ein Klick auf die Schaltfläche E-Mail schreiben soll nun eine neue Outlook-E-Mail öffnen und dort bereits die wichtigsten Einstellungen vornehmen. Sie soll die E-Mail-Adresse des Empfängers sowie Texte für den Betreff und für den Inhalt der E-Mail eintragen. Der Benutzer soll nur noch den Text anpassen und auf die Senden-Schaltfläche klicken. Anschließend soll die Anwendung die geänderten Daten aus der E-Mail auslesen und diese unter Bezug auf den betroffenen Kunden in die Tabelle tblKommunikation der Datenbank schreiben.
Wrapper-Klasse
Als ausführendes Organ für das Erstellen und Absenden der E-Mail haben wir der Datenbank eine Klasse namens clsSendMail hinzugefügt. Wie diese funktioniert, schauen wir uns später an. Erst einmal kümmern wir uns um ihre Benutzung und somit um die Prozedur, die beim Mausklick auf die Schaltfläche cmdEMailSenden ausgelöst wird (s. Listing 1). Die Prozedur deklariert und instanziert zunächst ein Objekt auf Basis der Klasse clsSendEMail. Seinen Eigenschaften EMailAn, Betreff und Inhalt weist die Prozedur entsprechende Texte zu. EMailAn wird dabei direkt aus den Kundendaten ausgelesen, für Betreff ein Platzhalter verwendet und der Inhalt rekrutiert sich aus einem per Code zusammengesetzten Text, der teilweise Kundendaten mit einbezieht. Dies ist nur eine provisorische Lösung zu Beispielzwecken: Im praktischen Einsatz werden Sie die Anwendung um E-Mail-Vorlagen erweitern, die Sie mit entsprechenden Platzhaltern für die Kundendaten versehen. Wir gehen in einem weiteren Beitrag namens E-Mail-Vorlagen einsetzen (www.access-im-unternehmen.de/841) auf diesen Ansatz ein.
Listing 1: Versenden einer E-Mail
Private Sub cmdEMailSenden_Click()
Dim objSendMail As clsSendMail
Dim db As DAO.Database
Dim strEMailVon As String
Dim strEMailAn As String
Dim strBetreff As String
Dim strInhalt As String
Set db = CurrentDb
Set objSendMail = New clsSendMail
With objSendMail
.EMailAn = Me.EMail
.Betreff = "<Betreff>"
strInhalt = "Hallo " & Me!AnredeID.Column(1) & " " & Me!Nachname & ", " & vbCrLf & vbCrLf
strInhalt = strInhalt & "<Inhalt>" & vbCrLf & vbCrLf
strInhalt = strInhalt & "Viele Grüße" & vbCrLf & vbCrLf & "André Minhorst"
.Inhalt = strInhalt
.MailSchicken
strBetreff = .Betreff
strInhalt = .Inhalt
strEMailAn = .EMailAn
strEMailVon = .EMailVon
End With
db.Execute "INSERT INTO tblKommunikation(KundeID, Kommunikationsdatum, Betreff, Inhalt, " _
& "EMailVon, EMailAn) VALUES(" & Me!KundeID & ", " & ISODatum(Now) & ", ''" _
& Replace(strBetreff, "''", "''''") & "'', ''" & Replace(strInhalt, "''", "''''") _
& "'', ''andre@minhorst.com'', ''" _
& strEMailAn & "'')", dbFailOnError
Set db = Nothing
Me!sfmKommunikation.Form.Requery
End Sub
Weiter im Takt: Die mit den notwendigen Daten ausgestattete E-Mail wird nun über die Methode MailSchicken erstellt und angezeigt. Wenn der Betreff und der Inhalt nicht mehr geändert werden sollen, kann die E-Mail direkt mit einem Klick auf den Senden-Button auf den Weg gebracht werden (s. Bild 3).

Nur für Abonnenten
Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.
Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.
So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.
Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.
Bereits Abonnent? Hier einloggen
Kostenlos & unverbindlich
Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?
Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?
In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.
Jetzt kostenloses Access-Audit anfordern →