SMTP E-Mail Funktion funktioniert nicht!

  • Hallo,

    folgende Funktion geht einfach nicht, mach ich irgendwas falsch???

    [autoit]

    #include <File.au3>

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

    $SmtpServer = "mail.gmx.net" ; address for the smtp-server to use - REQUIRED
    $FromName = "Name" ; name from who the email was sent
    $FromAddress = "*@yahoo.de" ; address from where the mail should come
    $ToAddress = "*@outlook.de" ; destination address of the email - REQUIRED
    $Subject = "test" ; subject from the email - can be anything you want it to be
    $Body = "test" ; the messagebody from the mail - can be left blank but then you get a blank mail
    $AttachFiles = "" ; the file you want to attach- leave blank if not needed
    $CcAddress = "" ; address for cc - leave blank if not needed
    $BccAddress = "" ; address for bcc - leave blank if not needed
    $Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
    $Username = "*" ; username for the account used from where the mail gets sent - REQUIRED
    $Password = "*" ; password for the account used from where the mail gets sent - REQUIRED
    $IPPort = 25 ; port used for sending the mail
    $ssl = 0

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

    Global $x = 0
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

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

    Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
    $objEmail.HTMLBody = $as_Body
    Else
    $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
    Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
    For $x = 1 To $S_Files2Attach[0]
    $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
    ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment($S_Files2Attach[$x])
    Else
    ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @CRLF)
    SetError(1)
    Return 0
    EndIf
    Next
    EndIf
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 Then $IPPort = 25
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    If $s_Username <> "" Then
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
    Case "High"
    $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
    Case "Normal"
    $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"
    Case "Low"
    $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
    SetError(2)
    Return $oMyRet[1]
    EndIf
    $objEmail = ""
    EndFunc ;==>_INetSmtpMailCom
    ;
    ;
    ; Com Error Handler
    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @CRLF)
    SetError(1); something to check for when this function returns
    Return
    EndFunc ;==>MyErrFunc

    [/autoit]

    und die nächste Funktion auch nicht!

    [autoit]

    #include <INet.au3>

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

    Local $s_SmtpServer = "smtp.mail.yahoo.com"
    Local $s_FromName = "Name"
    Local $s_FromAddress = "*@yahoo.de"
    Local $s_ToAddress = "*@hotmail.de"
    Local $s_Subject = "test"
    Local $as_Body = "test"
    Local $Response = _INetSmtpMail($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, "EHLO " & @ComputerName ,-1,1)
    Local $err = @error
    If $Response = 1 Then
    MsgBox(0, "Erfolg!", "Die E-Mail wurde versandt")
    Else
    MsgBox(0, "Fehler!", "Das versenden der E-Mail schlug fehl. Fehlercode: " & $err)
    EndIf

    [/autoit]

    Die erste schließt sich immer sofort wieder also hat gerade einmal eine Dauer von 200 Millisekunden. Die zweite gibt immer den Fehlercode 51 aus.. Gibt es noch eine weitere Methode eine EMail zu senden?

    Lg Phil-IT

    Einmal editiert, zuletzt von philipp (19. August 2014 um 19:42)

  • GMX

    Posteingangsserver: POP3: pop.gmx.net (bei SSL Port 995), IMAP: imap.gmx.net (bei SSL Port 993)
    Postausgangsserver: mail.gmx.net (bei SSL Port 465)
    Benutzername: GMX-Kundennummer oder GMX-E-Mail-Adresse
    Besonderheiten: Verwendet SMTP-Authentifizierung oder "POP3 vor SMTP", je nachdem, wie Sie Ihren Account eingestellt haben.
    SMTP steht auch über den alternativen Port 587 zur Verfügung.
    Sollte es beim Anmelden Probleme geben, sollten Sie in jedem Fall beide Möglichkeiten für den Benutzernamen ausprobieren.
    IMAP ist laut GMX nur in den Tarifen ProMail und TopMail verfügbar. Im Tarif FreeMail ist IMAP offiziell nicht verfügbar, aber es scheint bei vielen Konten trotzdem zu funktionieren (Stand: 03.03.2014).

  • Ich habs nochmal von meiner GMX Mail mit SSL versucht - mit Port 465 - sowie auch mit meiner Yahoo Mail mit SSL - und Port 465 - aber keins von beidem hat funktioniert. Ich hab keine Ahnung woran das liegen kann..
    OMG?! Sieht das wirklich keiner? OMG??? mir fällt es genau jetzt auf wo ich mir mein Script nochmal Zeile für Zeile anschau:

    Es fehlt ganz einfach der Aufruf der Funktion?!?!?!?! OMG.________. Tut mir leid! Danke tdm für die Hilfe mit der SSL, hab ich davor zwar auch schon alles versucht aber ohne Aufruf bring die Funktion gar nix!:D