_OL_Wrapper_SendMail gibt den Fehler 6002 aus

  • Hallo,

    ich hab mir ein kleines Programm geschrieben welches Daten aus einer .csv liest und mir als E-Mail schickt.

    Lief auch jetzt mehrere Wochen ohne Problem aber seit ca. 14 Tagen erhalte ich immer folgenden Fehler:

    Die Mail wird auch im Ausgangsordner angezeigt, kann aber nicht direkt versendet werden.

    Erst wenn sie in einen anderen Ordner verschoben wurde kann ich senden und kommt dann auch ohne Probleme an.

    Code
          Global $oOutlook = _OL_Open()
          If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)
    
    
          Global $sCurrentUser = $oOutlook.GetNameSpace("MAPI").CurrentUser.Name
          _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "Geschriebene Stunden", $mitarbeiterzeit[1]&" "&$mitarbeiter[1]&"<br>"&$mitarbeiterzeit[2]&" "&$mitarbeiter[2]&"<br>"&$mitarbeiterzeit[3]&" "&$mitarbeiter[3]&"<br>"&$mitarbeiterzeit[4]&" "&$mitarbeiter[4]&"<br>"&$mitarbeiterzeit[5]&" "&$mitarbeiter[5]&"<br>"&$mitarbeiterzeit[6]&" "&$mitarbeiter[6]&"<br>"&$mitarbeiterzeit[7]&" "&$mitarbeiter[7]&"<br>"&$mitarbeiterzeit[8]&" "&$mitarbeiter[8]&"<br>"&$mitarbeiterzeit[9]&" "&$mitarbeiter[9]&"<br>"&$mitarbeiterzeit[10]&" "&$mitarbeiter[10]&"<br>"&$mitarbeiterzeit[11]&" "&$mitarbeiter[11]&"<br>"&$mitarbeiterzeit[12]&" "&$mitarbeiter[12]&"<br>","" , $olFormatHTML, $olImportanceHigh)
          If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OutlookSendMail Wrapper Script", "Error sending mail. @error = " & @error & ", @extended: " & @extended)
    
          _OL_Close($oOutlook)
  • Hm, das funktioniert so bei mir:

    @extended = -2147024809 ==>> 0x80070057

  • Super Danke für die Hilfe ;)

    Ist natürlich deutlich schöner mit ner Funktion aber mein Fehler bleibt leider der gleiche!

    Ich werde heute mal nach der Outlookinstallation schauen....

  • Schöner wäre so:

    Evtl. reicht es, ein neues Profil anzulegen. Die Konten darin dann manuell anlegen, nicht mit Assistent - nur so weiß du genau, was gesetzt wird.

    2 Mal editiert, zuletzt von Bitnugger (17. September 2020 um 20:12)

  • Sorry für meine späte Antwort, bin gerade gut eingespannt....

    Was ich noch nicht ganz verstehe, warum es von heut auf morgen nicht mehr geht,

    es wurde in der Zeit auch kein Update gefahren.

    Einmal editiert, zuletzt von Daniel (18. September 2020 um 10:20)

  • Was ich noch nicht ganz verstehe, warum es von heut auf morgen nicht mehr geht,

    es wurde in der Zeit auch kein Update gefahren.

    Mit "kein Update gefahren" meinst du wohl "kein Windows-Update"... doch wenn du es in Outlook nicht umgestellt hast, macht es das unabhängig davon automatisch im Hintergrund bei jedem Start.

    Um dir die Version von Outlook anzeigen zu lassen, gibst du in der Outlook-Hilfe einfach "version" ein... dort steht dann, wie/wo du sie ablesen kannst. Ich habe dann wohl eine andere/älterere Version als du...

    "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE"

    In der MsBox (dann ist es ein COM-Error) wird als Ursache WinDescription = Falscher Parameter angegeben.

    Welcher Parameter das ist, kannst du evtl. herausbekommen, wenn du die Funktion nur mit den ersten beiden (weniger geht nicht) Parametern aufrufst... und dann einen weiteren anhängst, bis der Fehler wieder auftritt:

    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "", "", "Geschriebene Stunden", _ArrayToString($g_aZeiten, ' ', 1, -1, '<br>'), "", $olFormatHTML, $olImportanceHigh)

    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser) ; Test 1

    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser, "") ; Test 2

    ...

    Oder du testest es so:

    Die Ausgabe sollte dann so aussehen, wenn kein Fehler aufgetreten ist:

    + _OL_FolderAccess OK 

    + _OL_ItemCreate OK 

    + _OL_ItemModify OK 

    + _OL_ItemRecipientAdd $sTo OK 

    + _OL_ItemSend OK

  • + _OL_FolderAccess OK

    + _OL_ItemCreate OK

    + _OL_ItemModify OK

    + _OL_ItemRecipientAdd $sTo OK

    Bis dahin gleich und dann kommt mein bekannter Fehler

    Hab den gleichen Updatestand wie du nur bei mir ists die 365ger Version.

    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser)

    Auch schon damit bekomm ich meinen schönen Fehler...

    Bleibt auch nach neuinstallation von Office 365 bestehen....

    Ich muss wohl damit leben das die Mails im Entwürfeordner liegen bleiben

    oder ich schreib mir noch was um diese Mails in einen anderen Ordner zu verschieben und dann zu senden (was zumindest manuell funktioniert)

    aber das übersteigt ein wenig meine Kenntnisse....hab zwar schon ne schöne Oberfläche für meine Mitarbeiter geschrieben mit der

    alle Daten in csv`s abgelegt werden aber wenn ich in water`s quelltext schau hörts bei mir auf....

  • Ich zieh die gespeicherten Stunden aus verschiedenen .csv und sende die dann per Mail!

    Bitte nicht zu genau anschauen, bin nur Hobbyprogrammierer ;)


  • Ich habe langsam eine dunkle Ahnung, dass das an Outlook liegt.
    Es wird ein Mail-Objekt mit einer eindeutigen ID (EntryID) erstellt. Ist die Mail fertig erstellt, dann wird sie in den Ordner "Entwürfe" verschoben und erhält eine neue EntryID (was natürlich Schwachsinn ist).
    Somit ist das in der Funktion gespeicherte und von _OL_ItemCreate zurückgegebene Objekt ungültig.

    ==> Ich muss da noch forschen gehen, da dieses Problem schon mal aufgetreten ist.

    Ich melde mich.

  • Auf deinen Code in Post #10 werde ich jetzt mal besser nicht eingehen... nur 1 Syntax-Error, das ist für einen blutigen Anfänger schon eine ziemlich gute Leistung. Was dir fehlt, sind die Grundlagen zu AutoIt und ohne die geht es nun mal nicht! Ich Programmiere übrigens auch nur, weil ich es gerne mache. ;)

    _OL_Wrapper_SendMail($oOutlook, $sCurrentUser)

    Auch schon damit bekomm ich meinen schönen Fehler...

    Damit ist doch schon alles gesagt... wenn das nicht geht, liegt es definitiv an deinem MS-Office 365! Um das zu Testen, lässt man den ganzen anderen Rotz einfach weg... so hat man dann auch mehr Durchblick.

    water hat seiner UDF bereits ein Bsp. dafür beigelegt:

    Wenn das nicht funktioniert, liegt es definitiv nicht an dir... sondern an Outlook.

    Hier das Script, mit dem ich meine Mails via AutoIt versende:

    Bei EntryID klingelt auch bei mir etwas...

  • Wenn das nicht funktioniert, liegt es definitiv nicht an dir... sondern an Outlook.

    Liegt an Outlook...

    Hängt wieder genau so im Entwürfe Ordner

    @Bittnugger Ich hab mir Autoit nur über die Hilfe Stück für Stück angelesen und Grundlagen Programmierung gabs in der Technikerschule auch nur so lala.

    Gibt zum Glück viele Foren in denen man sich viel Beispiele anschauen kann, für mich ist es hier das erste mal das ich meine Probleme nicht selbst lösen konnte :(

    Wenn ich hier meine Oberfläche poste gibt´s wohl gleich einen Seitenbann... aber so sieht es halt aus wenn man was zusammen Bastelt und mehr ausprobiert als wirklich zu

    wissen ob es so funktioniert.

    Aber das Ergebnis funktioniert super, meine Mitarbeiter sind 50% schneller als mit em Papier und ich spar mir sicher jeden Tag 30-60 Minuten Aufträge abschreiben da ich die

    eingegebenen Daten direkt in mein Dispoprogramm eintragen lassen kann und alles Dank AutoIt :love:

    Eingabe, Oberfläche und speichern der Daten wären wahrscheinlich mit Access sinnvoller gewesen aber jetzt läuft es auch so recht sicher!

  • Zur COM Fehlermeldung in Post #6. Die Zeilennummer zeigt auf $vItem.Send() in Funktion _OL_ItemSend.

    An was das liegt, ist mir aber immer noch ein Rätsel.
    An der EntryID scheint es nicht zu liegen, denn dann müsste es ja nie funktionieren.

    Workaround könnte sein, dass nach _OL_Wrapper_SendMail auf den @error = 6002 geprüft wird. Falls zutreffend, mit _OL_ItemFind im Entwurfs-Ordner die Mail suchen und danach senden.

  • Welche Version der OutlookEX UDF verwendest Du? Ab Version 1.6.3.1 wird ein Fehler von Outlook abgefangen und mit einem (nicht übertrieben schönen) Workaround behoben:

    Zitat

    _OL_ItemSend:
    The function handles the MAPI_E_INVALID_PARAMETER (HRESULT 0x80070057) error found in Outlook 365 Version 2009.

    It creates and activates an Inspector for the item, minimizes the window and sends the item again to work around the error.

    Described here and the following posts: https://www.autoitscript.com/forum/topic/12…comment=1466457