Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mail wird nicht gesendet, bleibt im Postausgang bis Outlook manuell gestartet wi

Begonnen von vittorio0, März 29, 2023, 21:35:04

⏪ vorheriges - nächstes ⏩

vittorio0


Liebes Forum, ich habe nachfolgend eine Funktion die mir auf einem Formular per Befehlsschaltfläche Outlook aufruft, alle Einträge ausfüllt wie Sender, Empfänger, Anhänge und Betreff, die Unterschrift wird automatisch eingefügt. Das Sendeformular wird mit der Funktion aufgerufen und alles wird eingetragen. Klick ich nun auf Senden sieht es aus wie das Mail versendet wird und das Sendeformular wird auch geschlossen. Nun bleibt aber das Mail im Postausgang. Erst wenn ich Outlook manuell starte sehe ich dass das Mail noch im Postausgang sich befindet und wird dann aber korrekt gesendet. Was fehlt in meiner Funktion? Vielen dank für Hinweise, Gruss Vittorio0


Public Function SendOutlook(sSubject As String, sTo As String, Optional sCC As String, Optional sBcc As String, Optional sBody As String, Optional sAttachment As String, Optional sAttachment1 As String, Optional sAttachment2 As String)

'Ich habe Outlook 2019

On error goto ErrorHandling

    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    Dim OutAccount As Outlook.Account
    Dim strbody As String
   
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)
    Set OutAccount = OutApp.Session.Accounts("info@empfaenger.ch")
   
   
    OutMail.Attachments.Add (sAttachment)
    On Error Resume Next
   
    With OutMail
        .To = sTo
        .CC = sCC
        .BCC = ""
        .Subject = sSubject
        .SendUsingAccount = OutAccount
        .Display True   'or use .Send
        .HTMLBody = .HTMLBody & sBody
    End With
   
    OutApp.ActiveWindow
    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
    Set OutAccount = Nothing

Exit function

:Errorhandling
             
End Function

ebs17

1. Das Send müsstest Du wirklich einleiten im Code. Was soll sonst passieren?
2. Zu einem wirklichen Senden muss erst die Verbindung zum SMTP-Server aufgebaut werden. Das ist ein asynchroner Vorgang und dauert deutlich länger als Deine VBA-Prozedur. Es kann also schnell sein, dass das Ende der VBA-Prozedur das Senden abbricht.
Eigentlich müsste man ein Abwarten einfügen, bis die Mail vom Postausgang in den Ordner Gesendet gewechselt ist.
Mit freundlichem Glück Auf!

Eberhard

vittorio0

Zitat von: ebs17 am März 30, 2023, 11:09:251. Das Send müsstest Du wirklich einleiten im Code. Was soll sonst passieren?
2. Zu einem wirklichen Senden muss erst die Verbindung zum SMTP-Server aufgebaut werden. Das ist ein asynchroner Vorgang und dauert deutlich länger als Deine VBA-Prozedur. Es kann also schnell sein, dass das Ende der VBA-Prozedur das Senden abbricht.
Eigentlich müsste man ein Abwarten einfügen, bis die Mail vom Postausgang in den Ordner Gesendet gewechselt ist.
Hallo ebs17, vielen Dank für deine Antwort. Ich war der Annahme dass nachdem .Display das Sendeformular auf meinen Befehl Senden wartet und dann das Senden ausführt. Ich habe nun mal .Display mit .Send ersetzt, :) das Mail wurde gesendet. Schon mal ein Fortschritt, ich möchte jedoch vor dem Senden ev. noch ein Kommentar hinzufügen oder prüfen ob alles wie gewünscht eingetragen worden ist. Deine Überlgung mit der Warteschleife finde ich auch gut, jedoch wo würde ich die einfügen? Gruss Vittorio