bei hotmail nur nachsehen ob eMails vorhanden

  • hallo,
    mit _POP3connect kann ich auf verschiedene eMailserver zugreifen und nachschauen ob und wieviele eMails dort vorhanden sind (mittels _POP3Info und _ArrayDisplay). bei hotmail oder auch gmail geht das nicht. _INetSmtpMailCom ist nur vorgesehen, eMails zu senden. was soll ich also verwenden und wie ? danke.

    4 Mal editiert, zuletzt von supernova (10. April 2012 um 15:13)

  • ja, genau, bei gmail fand ich die einstellung und habe sie aktiviert. bei hotmail fand ich bis jetzt nichts.

    eMail senden geht bei beiden problemlos mit _INetSmtpMailCom ganz konventionell.

    es ist mindestens der port, wo an stelle der 110 die 995 sein muss.

    Einmal editiert, zuletzt von supernova (10. April 2012 um 15:14)

  • im bild 11.. sieht man einen normalen ablauf mit port 110

    [Blockierte Grafik: http://www.pizza-joker.com/autoit/11_ablauf_mit_port_110.jpg]

    im bild 21.. sieht man einen hängenden ablauf mit port 995 (bleibt dort stehen oder Myshutdown) 

    [Blockierte Grafik: http://www.pizza-joker.com/autoit/21_ablauf_mit_port_995.jpg

    im bild 31.. sieht man wie im source der _POP3.au3 die funktionen TCPStartup, TCPNameToIP und TCPConnect irgendwie funktionieren. (zu TCPNameToIP: habe auch direkt mit verschiedenen IP-werten probiert, hätte ja sein können, dass die umsetzung von text in eine IP nicht richtig funktionieren würde, ist aber okay). 

    die problemstelle ist wohl bei __POP3WaitForOK. diese nutzt die funktion __POP3WaitTcpResponse und diese widerum die funktion TCPRecv, welche bestandteil von autoit selber ist. 

    [Blockierte Grafik: http://www.pizza-joker.com/autoit/31_bleibt_hier_haengen.jpg

    im bild 41.. sieht man wie ich dort debugeinbauten vorgenommen habe um zu sehen, wie die antworten von TCPRecv sind. aber ausser hochzählen kommt da nichts. 

    [Blockierte Grafik: http://www.pizza-joker.com/autoit/41_empfaengt_nichts.jpg]

    das erhöhen der paketgrösse von 512 auf 2048 brachte keine veränderung.

    Einmal editiert, zuletzt von supernova (10. April 2012 um 15:16)

  • würde nicht lange bohren, findest hier http://hpop.sourceforge.net ein nettes, neuestes util welches auch bestens mit hotmail, gmail oder was sonst noch kreucht und fleucht fertig wird. bei dieser OpenPop.dll ist auch ein ausführbares EXE womit du testen/vergleichen kannst. in zukunft sicher das beste.

    kannst mir mal die daten vom gmail senden. ich teste dann von hier aus. vielleicht liegt es auch nur an der falschen IP.

  • habe mit deinen daten probiert und es funktioniert tatsächlich bestens mit OpenPop.dll, respektive die benutzung von deren beispielEXE. mehr detail kannst du nicht erwarten. bin am studieren der chm, aber die ist voll im bereich von "C" und mir völlig fremd. jedenfalls verwendet hotmail und gmail ganz normale routinen nur, in der _POP3.au3 ist das nicht eingebaut. wie sieht es mit dem hardcore von autoit aus ?

  • autoit kann auch fremde DLL's einbinden. vielleicht so:

    [autoit]

    local $oDLL,$nRetu
    $oDLL=DllOpen(@ScriptDir & "\fremdeInc\OpenPOP.dll")
    $nRetu=DllCall($oDLL,"int","FetchAllMessages", _
    "pop.gmail.com",995,1,"email-account","psw") ;;1=ssl
    DllClose($oDll)

    [/autoit]
  • oberstes ziel ist es, das eigentliche problem/aufgabenstellung zu lösen. im zweiten am liebsten mit "onboard-mitteln" von autoit. wenn das nicht erfolgreich, so "externe ware" anwenden. man müsste jemanden haben, der die integration von OpenPop.dll an die hand nimmt.

    Einmal editiert, zuletzt von supernova (10. April 2012 um 15:17)

  • habe mal ein testprgrämmli gemacht, so dass wir beim testen die gleiche basis haben. es stimmt, weder bei hotmail noch bei gmail kommt eine antwort, im gegensatz zu den allerwelts mailern. achtung, jeweilen den port noch anpassen. im debug-fenster unten im SciTE kann man den ganzen ablauf gut sehen/mitverfolgen.
    wie sind eure ergebnisse/vorschläge ?

    Spoiler anzeigen
    [autoit]

    ;;login_gmail.au3 äöü 12.04.02

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

    local $i
    local $oTCP
    local $cIP
    local $cAntwort=""

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

    ;;gmail
    $cIP="74.125.79.108" ;;74.125.79.108 74.125.79.109 supernova
    ;$cIP="74.125.43.108" ;;74.125.43.108 74.125.43.109

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

    ;;hotmail
    ;$cIP="207.46.46.181" ;;207.46.46.181 ?

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

    ;;einfach
    ;$cIP="213.133.103.20" ;;213.133.103.20 80.74.152.40

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

    ;;;;;
    ;;;;;quasi Main, läuft nur einmal durch
    ConsoleWrite($cIP & @CRLF)

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

    ;;Modul erst laden/starten
    TCPStartup()

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

    ;;verbinden
    $oTCP=TCPConnect($cIP,"995") ;;<================= 110 995

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

    ;;laufend abfragen
    For $i = 1 to 40 ;;40x bei 50m" = 2"
    $cAntwort=TCPRecv($oTCP,512)

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

    If $cAntwort=="" Then
    $cAntwort=f_PadL(4,"0",$i) & ":-"

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

    Else
    $cAntwort=f_PadL(4,"0",$i) & $cAntwort

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

    EndIf

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

    ;;anzeigen
    ConsoleWrite(StringStripWS($cAntwort,2) & @CRLF)

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

    Sleep(50)

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

    Next

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

    ;;Verbindung schliessen/abmelden
    TCPCloseSocket($oTCP)

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

    ;;Modul entladen
    TCPShutdown()

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

    ;;;;;
    ;;;;;
    Func f_PadL($pnLang,$pcFueller,$pcZuManip)

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

    While StringLen($pcZuManip)<$pnLang
    $pcZuManip=$pcFueller & $pcZuManip

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

    WEnd

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

    Return $pcZuManip
    EndFunc

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

    ;;ende

    [/autoit]

    4 Mal editiert, zuletzt von gango (10. April 2012 um 15:30)

  • danke dir "gango" für das testmuster. bei mir sind wie gesagt die gleichen effekte festzustellen. warte jetzt noch auf die info von "wirr4all", weil er vermutlich (örtlich) auf einem anderen gmail-server einloggt.
    bin irgendwie doch etwas enttäuscht über die mageren resultate/teilnahmen/ideen der autoitler.

    2 Mal editiert, zuletzt von supernova (10. April 2012 um 15:18)

  • habe das testmuster mit deinen zugangsdaten geprüft. mit dem gleichen misserfolg. umständlich ist, via traceroute erst die IP zu erzeugen. wir müssten da noch den original code aus der _POP3.au3 verwenden für die zerlegung des servernamens in eine IP.

  • habe das konvertieren mal eingebaut plus ein paar annehmlichkeiten. 

    Spoiler anzeigen
    [autoit]

    ;;login_gmail_2.au3 äöü 12.04.06

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

    local $i
    local $oTCP
    local $cIPname,$cIPzahl,$cIPport
    local $cAntwort=""

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

    local $aMailer[2]=["pop.gmail.com","995"] ;;google
    ;local $aMailer[2]=["pop3.live.com","995"] ;;hotmail
    ;local $aMailer[2]=["pop.bluewin.ch","110"]

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

    ;;so leichter verständlich
    $cIPname=$aMailer[0]
    $cIPport=$aMailer[1]

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

    ;;Modul erst laden/starten
    TCPStartup()

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

    ;;in IP konvertieren
    $cIPzahl=TCPNameToIP($cIPname)

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

    ConsoleWrite("|" & $cIPname & "|" & $cIPzahl & "|" & $cIPport & "|" & @CRLF)

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

    ;;verbinden
    $oTCP=TCPConnect($cIPzahl,$cIPport)

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

    ;;laufend (20x) abfragen
    For $i = 1 to 20 ;;20x bei 50m" = 1"
    $cAntwort=TCPRecv($oTCP,512)

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

    If $cAntwort=="" Then
    $cAntwort=f_PadL(4,"0",$i) & ":-"

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

    Else
    $cAntwort=f_PadL(4,"0",$i) & $cAntwort

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

    EndIf

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

    ;;anzeigen
    ConsoleWrite(StringStripWS($cAntwort,2) & @CRLF)

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

    Sleep(50)

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

    Next

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

    ;;Verbindung schliessen/abmelden
    TCPCloseSocket($oTCP)

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

    ;;Modul entladen
    TCPShutdown()

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

    ;;;;;
    ;;;;;
    Func f_PadL($pnLang,$pcFueller,$pcZuManip)

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

    While StringLen($pcZuManip)<$pnLang
    $pcZuManip=$pcFueller & $pcZuManip

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

    WEnd

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

    Return $pcZuManip
    EndFunc

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

    ;;ende

    [/autoit]

    ich denke, das TCPconnect müsste noch einen weiteren parameter senden oder sogar gleich senden, über welchen port man selbst senden wird. die 995 ist ja die vom mailer und nicht der port von uns sendenden.

    2 Mal editiert, zuletzt von supernova (10. April 2012 um 15:20)

  • die TCP-funktionen sind nicht in einer UDF im include-ordner. offenbar sind sie doch bestandteil vom autoit-hardcore. und trotzdem, autoit ruft sicher die entsprechenden originalen windows-prozeduren dazu auf (wie ja auch die OpenPop.dll)

    wer kennt die in der OpenPop.dll enthaltenen prozeduren (liste), sowie deren parameter ?

  • habe zwischenzeitlich die lösung aus vielen quellen zusammen gekratzt und das ganze selber gebaut. für googlemail läuft auch alles schon störungsfrei, hingegen bei der immer überlasteten hotmail will es noch etwas mehr zeit um alle timeout's abzufangen. fragt man dort viele male und häufig hintereinander den account ab, blockiert hotmail sogar den zugang für 15minuten mit der meldung -ERR Exceeded the login limit for a 15 minute period. Reduce the frequency of requests to the POP3 server. das nervt einem also schon beim testen.

    die lösung geht grundsätzlich jetzt via die OpenSSL-Win32 (davon werden aber nur einige dateien benötigt). es ist noch zu früh um den source zu zeigen. ich melde mich wieder in kürze.

  • es braucht die dateien openssl.exe, libeay32.dll, ssleay32.dll welche unten in der OpenSSL_dateien.zip sind.

    persönlich bin ich mit meiner lösung ganz und gar nicht zufrieden. mit der abgemagerten version, welche ich in kürze hochhieve sind immer noch 500 programmzeilen und für einen zuverlässigen transfer mit hotmail brauche ich sehr lange SLEEP-zeiten. mit gmail/google geht es aber bestens. das hat nichts mit SSL/verschlüsselung zu tun, hotmail agiert einfach chaotisch.