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.
bei hotmail nur nachsehen ob eMails vorhanden
-
- [ gelöst ]
-
supernova -
28. März 2012 um 18:06 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Google nutzt IMAP (POP3 gibt es glaube ich in den Einstellungen, ist aber generell weniger nützlich), bei Hotmail muss man POP3 glaube ich händisch aktivieren, sonst ist es überhaupt kein Standardprotokoll.
-
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.
-
verwendest du _POP3.au3, wo bei der funktion _POP3connect vom programmer der port 995 gesperrt ist.
kannst das ja mit #cs..#ce überspringen.
-
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.
-
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 die datei login.txt unten angehängt. diese ist nur zum manipulieren. der eMail-account ist von gmail.
-
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
[/autoit]
$oDLL=DllOpen(@ScriptDir & "\fremdeInc\OpenPOP.dll")
$nRetu=DllCall($oDLL,"int","FetchAllMessages", _
"pop.gmail.com",995,1,"email-account","psw") ;;1=ssl
DllClose($oDll) -
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.
-
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
[/autoit] [autoit][/autoit] [autoit]
local $oTCP
local $cIP
local $cAntwort="";;gmail
[/autoit] [autoit][/autoit] [autoit]
$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;;hotmail
[/autoit] [autoit][/autoit] [autoit]
;$cIP="207.46.46.181" ;;207.46.46.181 ?;;einfach
[/autoit] [autoit][/autoit] [autoit]
;$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);;Modul erst laden/starten
[/autoit] [autoit][/autoit] [autoit]
TCPStartup();;verbinden
[/autoit] [autoit][/autoit] [autoit]
$oTCP=TCPConnect($cIP,"995") ;;<================= 110 995;;laufend abfragen
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 to 40 ;;40x bei 50m" = 2"
$cAntwort=TCPRecv($oTCP,512)If $cAntwort=="" Then
[/autoit] [autoit][/autoit] [autoit]
$cAntwort=f_PadL(4,"0",$i) & ":-"Else
[/autoit] [autoit][/autoit] [autoit]
$cAntwort=f_PadL(4,"0",$i) & $cAntwortEndIf
[/autoit] [autoit][/autoit] [autoit];;anzeigen
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite(StringStripWS($cAntwort,2) & @CRLF)Sleep(50)
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit];;Verbindung schliessen/abmelden
[/autoit] [autoit][/autoit] [autoit]
TCPCloseSocket($oTCP);;Modul entladen
[/autoit] [autoit][/autoit] [autoit]
TCPShutdown();;;;;
[/autoit] [autoit][/autoit] [autoit]
;;;;;
Func f_PadL($pnLang,$pcFueller,$pcZuManip)While StringLen($pcZuManip)<$pnLang
[/autoit] [autoit][/autoit] [autoit]
$pcZuManip=$pcFueller & $pcZuManipWEnd
[/autoit] [autoit][/autoit] [autoit]Return $pcZuManip
[/autoit] [autoit][/autoit] [autoit]
EndFunc;;ende
[/autoit] -
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. -
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
[/autoit] [autoit][/autoit] [autoit]
local $oTCP
local $cIPname,$cIPzahl,$cIPport
local $cAntwort=""local $aMailer[2]=["pop.gmail.com","995"] ;;google
[/autoit] [autoit][/autoit] [autoit]
;local $aMailer[2]=["pop3.live.com","995"] ;;hotmail
;local $aMailer[2]=["pop.bluewin.ch","110"];;so leichter verständlich
[/autoit] [autoit][/autoit] [autoit]
$cIPname=$aMailer[0]
$cIPport=$aMailer[1];;Modul erst laden/starten
[/autoit] [autoit][/autoit] [autoit]
TCPStartup();;in IP konvertieren
[/autoit] [autoit][/autoit] [autoit]
$cIPzahl=TCPNameToIP($cIPname)ConsoleWrite("|" & $cIPname & "|" & $cIPzahl & "|" & $cIPport & "|" & @CRLF)
[/autoit] [autoit][/autoit] [autoit];;verbinden
[/autoit] [autoit][/autoit] [autoit]
$oTCP=TCPConnect($cIPzahl,$cIPport);;laufend (20x) abfragen
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 to 20 ;;20x bei 50m" = 1"
$cAntwort=TCPRecv($oTCP,512)If $cAntwort=="" Then
[/autoit] [autoit][/autoit] [autoit]
$cAntwort=f_PadL(4,"0",$i) & ":-"Else
[/autoit] [autoit][/autoit] [autoit]
$cAntwort=f_PadL(4,"0",$i) & $cAntwortEndIf
[/autoit] [autoit][/autoit] [autoit];;anzeigen
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite(StringStripWS($cAntwort,2) & @CRLF)Sleep(50)
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit];;Verbindung schliessen/abmelden
[/autoit] [autoit][/autoit] [autoit]
TCPCloseSocket($oTCP);;Modul entladen
[/autoit] [autoit][/autoit] [autoit]
TCPShutdown();;;;;
[/autoit] [autoit][/autoit] [autoit]
;;;;;
Func f_PadL($pnLang,$pcFueller,$pcZuManip)While StringLen($pcZuManip)<$pnLang
[/autoit] [autoit][/autoit] [autoit]
$pcZuManip=$pcFueller & $pcZuManipWEnd
[/autoit] [autoit][/autoit] [autoit]Return $pcZuManip
[/autoit] [autoit][/autoit] [autoit]
EndFunc;;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.
-
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.
-
wann ist "in kürze" vorbei ?
habe mich schon etwas vorbereitet und OpenSSL geholt.
hier mein Link zur OpenSSL-webseite: http://www.openssl.org
hier mein Link für den datei-download: http://slproweb.com/products/Win32OpenSSL.html
(man muss ziemlich weit nach unten scrollen)welche dateien genau werden davon benötigt ?
-
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.