SMTP Kommunikation protokollieren

  • Hallo zusammen,

    ich habe ein wenig mit dieser Funktion experimentiert, die an sich sehr gut funktioniert.

    Spoiler anzeigen
    [autoit]

    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    SendEmail("sender@server.intern", "empfaenger@server.intern", "Testmail", "Hallo, das ist eine Testmail")
    Func SendEmail($e_Sender, $e_Recipient, $e_Subject, $e_Text)
    $objMessage = ObjCreate ("CDO.Message")
    With $objMessage
    .Subject = $e_Subject
    .Sender = $e_Sender
    .From = $e_Sender
    .To = $e_Recipient
    .TextBody = $e_Text
    EndWith
    With $objMessage.Configuration.Fields
    .Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "w2k8.server.intern"
    .Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "auth"
    .Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pass"
    .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
    .Update
    EndWith
    $objMessage.Send
    Return
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func MyErrFunc()
    $HexNumber=hex($oMyError.number,8)
    Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
    "err.number is: " & @TAB & $HexNumber & @CRLF & _
    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF _
    )
    SetError(1)
    Endfunc

    [/autoit]


    Nur die Fehlerrückgabe passt nicht immer. Wenn man z.B. bei der SMTP Authentifizierung einen falschen Anmeldenamen/Passwort angibt,
    kommt die Meldung "Die Serverantwort lautet not available". Der Exchange protokolliert aber "535 5.7.3 Authentication unsuccessful".

    Meine Frage wäre: Gibt es eine Möglichkeit, die SMTP Kommunikation des Scrpts genauso zu protokollieren, wie es der Exchange auch macht?

    Spoiler anzeigen


    >,"220 W2K8.server.intern Microsoft ESMTP MAIL Service ready at Sun, 27 May 2012 10:35:22 +0200",
    <,EHLO XPPC1,
    >,250-W2K8.server.intern Hello [192.168.1.50],
    >,250-SIZE,
    >,250-PIPELINING,
    >,250-DSN,
    >,250-ENHANCEDSTATUSCODES,
    >,250-STARTTLS,
    >,250-X-ANONYMOUSTLS,
    >,250-AUTH NTLM LOGIN,
    >,250-X-EXPS GSSAPI NTLM,
    >,250-8BITMIME,
    >,250-BINARYMIME,
    >,250-CHUNKING,
    >,250-XEXCH50,
    >,250 XRDST,
    <,AUTH LOGIN,
    >,334 <authentication response>,
    >,334 <authentication response>,
    *,,Inbound AUTH LOGIN failed because of LogonDenied
    >,535 5.7.3 Authentication unsuccessful,
    -,,Remote


    MfG Maxxer