Outlook-Mail mit VBA (Access) erstellen - check ob User gesendet hat

  • Access

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hmrc.

    Outlook-Mail mit VBA (Access) erstellen - check ob User gesendet hat

    Hallo miteinander,
    ich versuche gerade aus Access mit VBA eine Outlook-Email zu erstellen. Das funktioniert prima. Per .Display zeige ich diese dem User zur Kontrolle noch einmal an.

    Nun möchte ich im Programm abfragen ob der User im Outlook-Mail-Programm auf "Senden" geklickt hat. Ich habe mich durch ein paar Forenbeiträge durchgelesen und festgestellt, dass das Mailobject objMail die Variable "Sent" enthält, mit der ich überprüfen könnte, ob die Mail abgesendet wurde. Leider looped das Programm nicht, nachdem ich dem User die Mail per ".Display" anzeige.

    Hier der Code:

    Visual Basic-Quellcode

    1. Dim objOutlook As Outlook.Application
    2. Dim objMail As Outlook.MailItem
    3. Set objOutlook = CreateObject("Outlook.Application")
    4. Set objMail = objOutlook.CreateItem(0)
    5. With objMail
    6. .To = Modul_ArtikelDB.GetConfigValue("Email_XXX")
    7. .cc = ""
    8. .Subject = "Neuer Artikel in XXXX > " & frm!ArtNr & "_" & frm!Bezeichnung
    9. 'HTMLbody1 und 2 wurden weiter oben als Strings definiert
    10. .HTMLBody = HTMLbody1 & HTMLbody2
    11. .Display
    12. End With
    13. '------------> Die folgenden Codezeilen sollten erst ausgeführt werden, nachdem der User auf Senden oder Abbrechen geklickt hat(in Outlook)
    14. If objMail.Sent = True Then
    15. 'Die E-Mail wurde tatsächlich vom User abgeschickt.
    16. frm![XXXX] = Now()
    17. frm![XXX] = Date + 2
    18. frm![XXXXX] = "in sh@re beantragt"
    19. DoCmd.Close acForm, Me.Name
    20. frm.Form.Requery
    21. frm.btnSpeichernSchliessen_Click
    22. MsgBox "Die E-Mail an die XXXX wurde erfolgreich versendet."
    23. Else
    24. MsgBox "Die E-Mail wurde n i c h t korrekt abgesendet!"
    25. End If
    Du könntest mal schauen, ob du das .sent Event von Outlook abonieren kannst ,oder ob du die mail ähnlich wie einen OpenFileDialog handeln kannst. Sprich, das Closing event der Nachricht abfangen und schauen, obs mit oder ohne senden geschlossen wurde..

    hmrc schrieb:

    Nun möchte ich im Programm abfragen ob der User im Outlook-Mail-Programm auf "Senden" geklickt hat.

    Moin,

    darf ich mit zwei Gegenfragen antworten?

    1. Ist das wirklich so geplant, dass der User sich auch noch selbst um das Versenden kümmern muss? Nicht automatisch?
    2. Wie wäre es ohne Outlook, direkt per SMTP?

    LG,
    Bruno
    Hi, danke euch beiden für die Antworten!

    Ich habe mir das mit dem automatisierten Senden auch schon überlegt. Allerdings möchte ich dem User noch einmal die Möglichkeit geben, den Inhalt zu überprüfen. Theoretisch könnte ich auch den Inhalt in einem Extra-Form kurz einblenden und die Mail dann versenden. Das wäre der Plan-B, wobei ich nicht genau weiß wie sich das hier mit dem Firmenmailserver und Authentifizierung verhält. (großes Unternehmen >200.000 Mitarbeiter)
    Habe es folgendermaßen lösen können:
    • Zunächst die beiden Variablen global definieren und für objMail das Schlüsselwort WithEvents verwenden

    Quellcode

    1. Dim objOutlook As Outlook.Application
    2. Dim WithEvents objMail As Outlook.MailItem

    • Anschließend kann man auf die Events des objMail Outlook-MailItems folgendermaßen reagieren:

    Quellcode

    1. Private Sub objMail_Send(Cancel As Boolean)
    2. Debug.Print ("Mail versendet")End Sub

    Welche Events noch exsistieren geht aus dieser Liste hervor:
    msdn.microsoft.com/en-us/libra…look.mailitem_events.aspx
    Danke euch für eure Hilfe!
    /Thema erledigt