_INetSmtpMail

  • ok bei diesem befehl werd ich aus dem autoit helpfile nicht schlau ^^

    wie bekomme ich meinen smtpserver denn raus?

    bzw wie muss ich das script hier umändern damit ich die email von jedem pc aus zu meiner email adresse geschickt werden kann?

    Spoiler anzeigen
    [autoit]


    #include <INet.au3>

    $s_SmtpServer = "???????????"
    $s_FromName = "My Name"
    $s_FromAddress = "From eMail Address"
    $s_ToAddress = "ich@ich.de"
    $s_Subject = "My Test UDF"
    $ashelo = "helo"
    Dim $as_Body[2]
    $as_Body[0] = "text"
    $as_Body[1] = "text2"
    $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $ashelo, -1)
    $err = @error
    If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
    Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf

    [/autoit]

    ( ich möchte ein support script in eins meiner tools einbauen wo der user nur den text einfügen muss) oder braucht man die email adresse vom ausgehenden pc?
    ?(

    ps: ist noch offen nicht gelöst kanns nur nichmehr ändern ^^
    sry @ admins

    2 Mal editiert, zuletzt von azunai (22. September 2007 um 17:08)

  • k.a. wies geht aber schau dir mal das an vll hilfts dir weiter in telnet eingeben

    telnet pop.web.de pop3
    userXXXX@web.de
    pass PASSWORD
    list
    retr 1
    quit

    _______________________________

    telnet mail.web.de smtp
    helo Web.de
    mail from:<i3illig@web.de>
    rcpt to:<i3illig@gmail.com>
    data
    XXX
    .
    quit

    Einmal editiert, zuletzt von I3iLLiG (22. September 2007 um 17:16)

  • Hi

    Also der SMTP server ist abhänging vom Provider
    Bei GMX ist es zb mail.gmx.net
    Web glauibe ich smtp.web.de
    Das musst du von deinem Provider bekommen

    Das problem, vor dem auch ich im Moment stehe ist, die meisten provider setzen eine Authentifizierung voraus, was diese Funktion scheinbar nicht macht.

    Zur Erklärung
    Telnet ist ein programm, das bei windows dabei ist, damit kann man verbindungen zu einem Server aufbauen, in diesem Fall über das POP3 oder das SMTP Protokoll
    Die Befehle bei den protokollen sind bei jedem Provider die gleichen (Dazu sind die Protokolle ja da :) )
    Erklärung zu SMTP gibts bei Wikipedia eine: http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
    Dort steht auch, wie man über telnet eine email versendet.

    Spoiler anzeigen
    [autoit]


    #include <INet.au3>

    $s_SmtpServer = "smtp.web.de" ; der SMTP Server deines Providers
    $s_FromName = "Max Mustermann" ; Dein Name, steht dann in der Email als Absender
    $s_FromAddress = "max.mustermann@web.de" ; Deine Emailadresse, die als absender eingetragen wird
    $s_ToAddress = "ich@ich.de" ; da soll die email hin
    $s_Subject = "Betreff"
    Dim $as_Body[2] ;
    $as_Body[0] = "Hallo" ; erste zeile der email
    $as_Body[1] = "Dies ist eine Testmail" ; zweite Zeile der Email
    $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    $err = @error
    If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
    Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf

    [/autoit]


    Bringt und aber hier nicht weiter, weil ich glaube dass diese funktion authentifizierung nicht unterstützt, muss ich erstmal testen
    aber da die meisten smtp server (außer du hättest einen eigenen im keller, was ja wohl nicht der fall ist) diese erfordern um zu verhindern, das fremde leute den server als spammschleuder verwenden, wird das damit wohl so nicht gehen

    berichtigt mich, wenn ich falsch liege :)

    ich werde jetzt erstmal ein wenig rumprobieren


    Edit:

    Hab im Forum noch was andres gefunden
    Schau mal hier: Email senden.
    Der letzte Beitrag, da ist eine Funktion mit auth drin, kann es nur hier im moment nicht testen, da ich hier an externe mailserver nicht rankomme
    muss es zu hause mal testen
    Die Werte halt wie im andern entsprechend anpassen und bei User und Pass deine Zugangsdaten rein

    Einmal editiert, zuletzt von Ceenen (24. September 2007 um 10:32)

  • hi

    also ich habe ein wenig sowohl mit dem _INetSmtpMail, als auch dem _INetSmtpMailAuth rumgespielt
    dabei ist mir aufgefallen, was der HELO, bzw EHLO 2 mal gesendet wird, worauf der mailserver hier in der firma recht alärgisch reagiert und mit der fehlermeldung duplicate EHLO die verbindung killt.
    komme von hier an keine externen mailserver, deswegen kann ich nicht testen, ob das bei andern auch so ist

    mit einer kleinen änderung in der funktion wird verhindert das er das nochma sendet, dann funktioniert es hier, kann das jemand bestätigen

    die änderung ist folgendes (Zeile 10, Zeile 107 im kompletten Script, auf das BugFix oben verwiesen hat):

    [autoit]


    ; open stmp session
    If _SmtpSend ($v_Socket, $s_Send[0], $s_ReplyCode[0], $b_trace, "220", $s_first) Then
    SetError(50)
    Return 0
    EndIf
    ; send header
    ; HIER
    ; da steht orginal $_Count=0, damit wird aber das EHLO doppelt gesendet, was der Server blockt, mit 1 funktioniert es bei mir
    For $i_Count = 1 To UBound($s_Send) - 2
    If _SmtpSend ($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(50 + $i_Count)
    Return 0
    EndIf
    Next

    [/autoit]

    2 Mal editiert, zuletzt von Ceenen (24. September 2007 um 11:57)

  • hm ok hab auch mal wieder drann rumgebastelt allerdings ist mein ziel ja das ich das script in ein programm einbaue ( es sollte also möglichst von jedem pc aus gehen ohne es manuell zu konfigurieren, und da scheiterts extrem bei mir..., kein plan wie ich das machen soll)

  • also eine allgemeingültige funktion wirste wohl nicht hinbekommen
    Du hast nun mal für jede Emailadresse spezifische smtp Server, die meist auch eine Authentifizierung fordern
    Frei Server gibt es wohl kaum noch

    Eine Idee von mir wäre es, die Daten aus Outlook auszulesen, aber ob das geht (gerade das Passwort) bin ich mir nicht so sicher

    Aber weiß auch nicht genau, was du eigentlich vor hast
    das könnte vielleicht schon weiter helfen, eine andre lösung zu finden

  • ok sagen wir zum beispiel, wenn ein program abstürtzt und das fenster
    blablabla.exe hat ein problem festgestellt und muss beendet werden
    problembericht senden?

    also mein ziel ist es genau soetwas nachzubauen ich will ein script haben, welches einen daten bericht o.ä sendet

    grund: ich habe ein programm, welches für ein spiel zusatzmöglichkeiten bietet.
    allerdings ist es interface bedingt d.h. es muss genau richtig eingestellt sein.
    ich will nun falls irgend ein fehler auftrit der user einfach senden drücken brauch und ich dann weiß welcher fehler und warum dieser fehler aufgetreten ist und dem user einfach ne email schreiben brauch wie er verfahren muss damit alles glatt läuft

    das problem ist das der user ja ziemlich oft nicht wirklich was von pc's versteht sondern nur von seinem spiel


    ok hoffe das macht das ganze jetzt etwas klarer

  • die entscheidung ist eh möglich
    nur wollte dem user es möglichst einfach machen
    mit _inetmail muss er ja allerdings auchnoch die mail selber mit seinem mail programm manuell abschicken
    schöner wärs natürlich wenn der use nur einen button drücken muss

  • eine solche benachrichtigung würde ich persönlich wohl über einen webseitenaufruf (InetGet) auf eine spezielle seite auf meiner homepage machen und dann über php eine email senden

    denke aber mal, diese variante steht bei dir nicht zur verfügung

    du könntest auch ein extra postfach zb bei gmx oder web anlegen, dass nur für diesen zweck dient, dann würden die zugangsdaten fest im programm hinterlegt

  • hm also ich hab nen eigenen webserver zur verfügung nur mit php kenn ich mich nicht aus

    und wie meinst du das ? klar kann ich bei gmx nen acc extra dafür machen nur wenn ich dann den befehl _inetmail benutze kann ich da keinen macro einbauen der automatisch verschickt, da ja das email programm von pc zu pc anders ist manche haben outlook ander aol o.ä.

  • genau so mein ich das

    sprich du hinterlegst im programm fest ein emailkonto, ober das jeder, der freien zugriff aufs internet hat, mit den daten, also jeder der das programm ausführt eine email senden kann, unabhängig vom seiner eigenen umgebung, ob er nun outlook, thunderbird aol oder sonst was nutzt, da _InetSMTPMail/Auth eigenständig arbeitet

    Ein extra postfach deswegen, dass nicht jemand deine zugangsdaten vom privaten postfach rausbekommen kann. smpt ist ein unverschlüsseltes protokol und somit könnte jemand der das programm ausführt mit entsprechenden wissen die daten rausbekommen, also dient primär der sicherheit


    wenn du dich mit php oder ähnlcihen nicht auskennst stehst du dort wohl vor dem gleichen problem
    vorteil da ist jedoch, du musst keine smtp daten eintragen, da dies der provider schon in der serverkonfiguration eingestellt hat


    mfg

  • ok ich werd wohl mal die gmx version versuchen

    und was das mit der sicherheit angeht..
    ob nun smsp verschlüsselt oder unverschlüsselt ist spielt dakeine rolle...
    schließlich kann man ja jede exe die aus einer au3 datei compiled wurde wieder in au3 umwandeln... EGAL ob beim compilen passwörter eingegeben wurden bzw decompile disallowed eingestellt war...
    leider hab ich auch noch keine möglichkeit gefunden dagegen vorzubeugen (ein freund allerdings schon aber der hälts geheim, sagte nur soviel wie "upx packer mit hexeditor bearbeiten", aber ich hab keine ahnung von hexen daher klappts auch nich ^^)