SendEmail

  • ich habe hier im forum schon so einiges zu SendEmail.exe gelesen.
    als alternative hätte ich das Sendit so nebenbei anzubieten:
    http://www.petersen.de/sendit/index.html

    aber in beiden fällen funktioniert das versenden einer e-mail nicht, wenn man seinen mail-client nicht aktiv hat bzw. hatte. ich benötige zunächst eine authentifizierung am pop-server. diese löse ich mit: "telnet pop.gmx.de 110" unschön dabei ist, dass ich mit meinem autoit-script in einer dos-box "rumhantiere" um meinen usernamen und passwort dort anzugeben.

    konkret und vereinfacht sieht das so aus:

    [autoit]

    Run ("telnet.exe pop.gmx.net 110")
    send ("user username{ENTER}")
    send ("pass passwort{ENTER}")
    send ("quit{ENTER}")
    send ("{ESCAPE}")

    [/autoit]

    erst danach kann ich eine e-mail versenden.

    gibt es eine andere möglichkeit (also keine dos-box) unter autoit bzw. exestiert hier schon ein script oder function dazu ?

    danke und gruss exberliner

    Einmal editiert, zuletzt von ExBerliner (5. September 2006 um 03:56)

  • Hallo!

    arbeite auch im Produktiveinsatz mit sendeMail
    schau Dir mal die Hilfe Langform an, da gibts 2 Optionen für das Authentifizieren beim POP3-Server, brauchst keine weitere eMail-Software dafür auf der Kiste.

    Wenn Du nicht klarkommst, nochmals melden, muß jetzt zum Autoit-Programmieren ....

    Grüße

    German

    • Offizieller Beitrag

    HI,

    order probier mal :

    Spoiler anzeigen
    [autoit]

    #include<file.au3>
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

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

    $rc = _INetSmtpMailCom('$s_SmtpServer', "$s_FromName", "$s_FromAddress", "$s_ToAddress", "Test Subject", "Test <b>Body</b>", "", "1@gmx.de; [email='123@gmx.de'][/email]","", "$s_Username", "$s_Password")
    If @error then
    msgbox(0,"Error sending message","Error code:" & @error & " Description:" & $rc)
    EndIf

    [/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_Username = "", $s_Password = "")
    $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.Cc = $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])
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment ($S_Files2Attach[$x])
    Else
    $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
    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
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    ;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
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Sent the Message
    $objEmail.Send
    if @error then
    SetError(2)
    return $oMyRet[1]
    EndIf
    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] & @LF)
    SetError(1); something to check for when this function returns
    Return
    EndFunc;==>MyErrFunc

    [/autoit]
  • Nur mal zwischendurch - dir ist klar das GMX telnet eine sicherung hat, dass sich der account in den letzen 10 minuten davor auf https://autoit.de/www.gmx.de eingeloggt haben MUSS??

    Also so wird man keine emails bekommen, hab das auch schon probiert, von hand..

    hoffe man versteht was ich meine?^^

    N beispiel^^

    Es ist 13:14.
    Ich will mich einloggen über Telnet, bekomm nen error.
    Wäre ich um 13:04 auf https://autoit.de/www.gmx.de gegangen und hätte mich eingeloggt, wäre jetzt kein error da =)

    Also zumindest vor 1 Monat war das noch so^^


    //edit sehe gerade es funtzt jetzt, komisch^^

    Einmal editiert, zuletzt von huggy (5. September 2006 um 13:17)

  • @huggy : also bei mir klappt das schon mit telnet.

    msp-holzwurm : :hammer: ja klar, da kann man authentifizierung über "sendemail" machen. naja, wer liest ist klar im vorteil. muss ich dann mal in ruhe testen, ob sendemail auch dateianhänge und so ...

    @mega : da brauche ich etwas um den code aufzubröseln, vielen dank.

    finde das feedback hier echt klasse.
    vielen dank.

    gruss exberliner

    • Offizieller Beitrag

    HI,

    ist gar nicht so schwer, du mußt nur diese Zeile ändern:

    [autoit]

    $rc = _INetSmtpMailCom('$s_SmtpServer', "$s_FromName", "$s_FromAddress", "$s_ToAddress", "Test Subject", "Test <b>Body</b>", "", "1@gmx.de; [email='123@gmx.de'][/email]","", "$s_Username", "$s_Password")

    [/autoit]

    So long,

    Mega

  • das mit dem Dateianhang geht auch, das richtige gefuzzle geht erst los, wenn Du dann Dateinamen mit Leerzeichen zwischendrin hast.

    Hat mir gleich ne Funktion gebaut,
    xxxmail SYSTEM "Nachricht an die Softies"

    dazu eine xxxmail.ini
    [SYSTEM]
    weichei1@superserver.de
    weichei2@superserver.de
    [Kasse]
    zahlenfuzzi1@superserver.de

    damit kann ich aus anderen autoit-Projekten Gruppenweise Mails verschicken, z.B. an alle eMails der Section [Kasse] in meiner xxxmail.ini Datei.

    Ist ne feine Geschichte, war ein Kundenwunsch (kannst Du mir da nicht was bauen, weil die Abteilung xyz schaut da nicht selbst nach, ob da Protokolle gekommen sind).

    Nur mal so als Anregung.

    Gruss

    German
    PS: und Überleben tut nur der, wer auch das macht was die Kunden wollen

  • msp-holzwurm

    jau, das war ein gefuzzle. aber es funktioniert super. meine tests waren alle okay. morgen früh läuft das prog dann produktiv. ich denke, da wird nix mehr schiefgehen. der hinweis mit leerzeichen im dateinamen war gold wert. danke.

    gruss exberliner

  • Hallo Leute!

    Irgendwie komme ich garnicht auf den Code von Xenobiologist klar.
    Sehr verwirrend alles... angeblich, muss man ja nur die eine Zeile ändern... die Frage ist jedoch nur... WIE????

    Wollte das Ding für GMX benutzen...

    Kann mir doofie das mal einer erklären??? Eventuell mit, was in welcher Form geändert werden muss

    Vielen lieben Dank!!!