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).
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