Emails downloaden/abrufen
-
Danke schonmal für die Links.
Ich habe das ganze mal über Telnet gemacht mit der cmd von windows da sich putty immer nach erfolgreichem einloggen schließt...
Allerdings werden mir nicht alle Emails angezeigt.
Laut "stat" hab ich 61 bei web.de allerdings habe ich da 120+ die auch ungelesen sind!Bei gmx ist es ähnlich... es wird immer weniger angezeigt als ich eigentlich habe... Was ist da los?
-
Also ich hab's gerade mal von Hand versucht, bei pop3.arcor.de. Da hat alles gepasst. Sicher, dass du alles richtig machst?
-
Ich denke schon ich schreibs mal hier rein wie ich es gemacht habe
telnet pop.gmx.net 110 ( oder natürlich pop3.web.de )
user blalba
pass passwort
->OK - bestätigung das ich eingeloggt bin
stat ( falsche anzahl der emails
)list ( auch falsche anzahl
)
-
So hab jetzt mich mal mit Sockets beschäftigt...
Allerdings geht das ganze noch nicht so wie ich will

Verbunden bin ich... Hier mal ein Teil des Codes
char buf[256]; long rc; SOCKET s; SOCKADDR_IN addr; // Hier connectet er usw ich habe das mal ausgelassen und gleich zum senden un empfangen gesprungen recv(s,buf,256,0); std::cout << buf << std::endl; strcpy(buf, "user zensiert"); send(s,buf,sizeof(buf),0); recv(s,buf,256,0); std::cout << buf<< std::endl; strcpy(buf, "pass zensiert"); send(s,buf,sizeof(buf),0); recv(s,buf,256,0); std::cout << buf<< std::endl;Soooo Problem...
Nach dem ersten recv stelle ich fest das ich wirklich verbunden bin allerdings kommt nach der OK meldung von GMX noch ein paar komische zeichen ^^ vermutlich weil buf 256 groß ist und die ok meldung keine 256... weiß aber nicht genau.. wäre nett wenn mir jemand sagen könnte wie man das behebt...
dann sendet er den usernamen
Antwort: May i have you password
Senden des passworts
Antwort: Wrong ID/Pw
Was mache ich falsch?
Ich habe mich gerade durch ein Tutorial etwas eingelesen allerdings ist das nicht für pop3 gedacht nur sockets allgemein etwas.Falls es jmd interessiert... ip + port
addr.sin_port=htons(110);
addr.sin_addr.s_addr=inet_addr("213.165.64.22");passt alles sonst wäre ich ja nicht verbunden.

Danke schonmal

-
So das Problem ist wohl das er die 256 zeichen sendet anstatt nur die von id+pw...
deshalb wollte ich das jetzt so machen:strcpy(buf, "user zensiert"); send(s,buf,13,0); std::cout << "test" << std::endl; recv(s,buf,256,0);Sooo... Das test kommt noch dann hängts beim recv..
Warum? Wie kann ich das beheben? Ist halt ziemlich komisch wenn ich nämlich:send(s,buf,sizeof(buf),0);mach gehts! Allerdings kommt dann wrong id/pw...
Dankeeee
-
Ich kann nur raten:
Möglicherweise reicht "user zensiert" nicht, sondern es muss noch die terminierende 0 mitgesendet werden? Also Länge 14 statt 13.
Oder es muss "/r/n" mitgesendet werden ... ist aber eher unwahrscheinlich, weil das im anderen Fall ja zufällig irgendwo in buf stehen müsste.
-
ganz komisch das ganze
es will und will einfach nicht
... Das einzigste was ich jetzt halt bekomme ist von wegen -OK Gmx server rdy... dann test dann lädts
-
Hier mal ein kleines bild ...
http://i29.tinypic.com/2cmpwcp.jpg
Also an den leerstellen nach den passwort und id kanns nicht liegen hab mal mit telnet das gleiche probiert...
pass blabla [GANZ VIEL LEERSTELLEN]
geht trotzdem...

-
Beachte den Return Wert von recv(..). Dazu ein paar passende Threads...
http://www.c-plusplus.net/forum/viewtopic-var-t-is-247692.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-243866.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-240951.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-238698.html
Simon
-
strcpy(buf, "user xxx@gmx.de"); send(s,buf,10,0);Wenn ich das so habe , also das er max 10 zeichen senden soll gibt recv unten drunter 0 zurück ;).
Vermutlich weils nichts zurück gibt

Oder habe ich dich falsch verstanden?
-
Histopheros schrieb:
strcpy(buf, "user xxx@gmx.de"); send(s,buf,10,0);Wenn ich das so habe , also das er max 10 zeichen senden soll gibt recv unten drunter 0 zurück ;).
Vermutlich weils nichts zurück gibt

Oder habe ich dich falsch verstanden?
Such doch mal danach was ein Return Wert 0 bedeutet!
Sieht nicht danach aus, als wüsstest Du das. Ist aber wichtig!
Simon
-
"It receives 0 if the connection is closed gracefully with FIN squence"
Ahha aber warum? habe ja kein quit oder so geschrieben o.O.
-
Kann nich editieren...
Kann es sein das der send nicht ankommt und das dann einfach der "TimeOut" ist?