Outlook-Mails senden und speichern

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

pic001.png

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.

pic002.png

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

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar