POP3-Konten abfragen
-
Hallo Leute,
ich möchte gern diverse POP3-Konten abfragen und die E-Mails bei mir lokal weiterverarbeiten. Gegebenenfalls sollen die E-Mails nach dem Abholen auf dem POP3-Konto gelöscht werden.
Gibt es zur C++-Programmierung und diesem Thema etwas zum Nachlesen? Oder hat jemand evtl. eine Codeschnipsel für mich?
Vielen Dank
-
bei wikepedia sind die Befehle aufgeführt. http://www.c-worker.ch/tuts.php Findest du Sockes. Du schickst einfach die Befehle zum Server.
mfg liggi1998
-
Okay, das werde ich mir mal anschauen.
Zusatzfrage: Kann man dann auch die POP3-Mails 1:1 nehmen und auf dem lokalen Mailserver (z.B. per SMTP) absetzen, damit dieser die dann weiter verteilt?
Vielen Dank
-
ja, bei wikepedia gibts auch ne Seite über smtp, hast dir wahrscheinlich schon angesehen.
mfg liggi1998
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
So, jetzt habe ich mir das ganze mal angeschaut und mir eine kleine Socket-Klasse erstellt.
Das Verbinden zu einem POP3-Server funktioniert. Das erstmalige "recv()" auch noch (Statusmeldung des POP3-Dienstes erscheint). Danach gebe ich ein "send()" auf ("USER abc@mail.de"). Als Ergebnis erhalte ich die korrekte Anzahl der gesendeten Bytes zurück.
A-Bär: Wenn ich nun nach dem Senden ein erneutes "recv()" aufsetze, bleibt das Programm genau in dieser Zeile hängen. Selbst im Debugmodus (MS VC++ 2005) springt er baim Abarbeiten nicht wieder in den Quelltext zurück. So, als ob er noch in der Abarbeitung der entsprechenden Zeile sich befindet (und ewig keine Antwort vom POP3-Dienst bekommt).
Öffne ich eine Telnet-Sitzung und gebe die Kommandos ein, funktioniert der entsprechende Zugriff wunderbar...
Womit kann dies zusammenhängen?
-
\r\n vergessen?
-
ja, hast recht. Ich hatte nur "\n" anstelle von "\r\n".
Habe aber noch zusätzliche Probleme. Nachdem ich das Kommando "RETR 1\r\n" sende, erhalte ich via recv() ein "+OK message follows" zurück. Soweit so gut. Gehe ich in den Debugger rein und lasse zwischen dem send() und dem resc() kurze Zeit verstreichen, erhalte ich nicht nur die gerade beschriebene Meldung zurück, sondern zusätzlich noch die gesamte Nachricht.
Das bedeutet, dass ich bei der normalen Programmausführung zweimal recv() aufsetzen muss und beim Debuggen nur einmal. Ansonsten w+rde die Anwendung nicht weiter arbeiten. Oder auch anders ausgedrückt: Wie muss ich meine Anwendung stricken, damit ich nicht Gefahr laufe, dass ich ein recv() zuviel aufsetze?
Muss ich irgendwie eine Pause reinprogrammieren? Wenn ja wie? Oder muss ich das resv() irgendwie parsen?
Vielen Dank
-
Hallo Leute,
welche Möglichkeit habe ich, beim Empfangen von POP3-Nachrichten mit Timeouts zu arbeiten? Kann ich die irgendwie per socket einstellen?
Vielen Dank