maceis
Aktives Mitglied
Thread Starter
- Dabei seit
- 24.09.2003
- Beiträge
- 16.880
- Reaktionspunkte
- 626
hallo zusammen,
ich habe ein Problem in Zusammenhang mit einer Netzwerkverbindung zu einem pop3 Server, die ich mit PHP aufbaue.
Die Verbindung selbst kann ich problemlos mit fsockopen() herstellen.
Auch die Authentifizierung mit fputs() klappt ohne Probleme, die Serverantworten lese ich mit fgets() ebenfalls erfolgreich aus.
Probleme gibt es erst, wenn ich mit freads() Mails abrufen und deren Text ausgeben möchte.
Bei der ersten Mail klappt das noch, die zweite wird mir nicht mehr ausgegeben.
Hier mal ein Auszug aus dem Skript, das ich für wichtig erachte.
Vielleich kann mir mal jemand einen Tip geben.
Nur Mail 4 wird am Browser ausgegeben.
Was mir noch aufgefallen ist:
Beim Sniffen mit dem ethereal ist mir aufgefallen, dass die Mail schon lang gesendet wurde, die Seite im Browser aber erst rund 1 Minute später aufgebaut wird.
Die zweite Mail wird gar nicht vom Server gesendet obwohl das retr 5 Kommando gesendet wird.
Ich hatte daher befürchtet, dass das "eof" der ersten mail "stört", allerdings hat ein Zurücksetzen (Zeile 96) auch nichts gebracht.
Ziel ist es, dass ich hintereinander zwei retr-Kommandos an den Server senden kann und mir auf der Seite die beiden Mails hintereinander ausgegeben werden.
ich habe ein Problem in Zusammenhang mit einer Netzwerkverbindung zu einem pop3 Server, die ich mit PHP aufbaue.
Die Verbindung selbst kann ich problemlos mit fsockopen() herstellen.
Auch die Authentifizierung mit fputs() klappt ohne Probleme, die Serverantworten lese ich mit fgets() ebenfalls erfolgreich aus.
Probleme gibt es erst, wenn ich mit freads() Mails abrufen und deren Text ausgeben möchte.
Bei der ersten Mail klappt das noch, die zweite wird mir nicht mehr ausgegeben.
Hier mal ein Auszug aus dem Skript, das ich für wichtig erachte.
PHP:
...
17 retr_message($handle, "retr 4\r\n");
18 retr_message($handle, "retr 5\r\n");
...
80 function retr_message($handle, $command)
81 {
82 // retr-Befehl an Server senden
83 fputs($handle, $command);
84 // retr- Befehl im Browser ausgeben
85 $command="<font color=blue>".($command)."</font>";
86 echo $command;
87 // Antwort des Servers in Variable speichern
88 $buffer = fread($handle,128);
89 while (!feof($handle))
90 {
91 $buffer .= fread($handle, 128);
92 $status= socket_get_status($handle);
93 }
94 // Antwort des Servers am Browser ausgeben
95 echo "<font color=maroon".nl2br($buffer)."</font>";
96 // $status['eof']=0;
97 show_status($status, "navy");
98 }
...
Vielleich kann mir mal jemand einen Tip geben.
Nur Mail 4 wird am Browser ausgegeben.
Was mir noch aufgefallen ist:
Beim Sniffen mit dem ethereal ist mir aufgefallen, dass die Mail schon lang gesendet wurde, die Seite im Browser aber erst rund 1 Minute später aufgebaut wird.
Die zweite Mail wird gar nicht vom Server gesendet obwohl das retr 5 Kommando gesendet wird.
Ich hatte daher befürchtet, dass das "eof" der ersten mail "stört", allerdings hat ein Zurücksetzen (Zeile 96) auch nichts gebracht.
Ziel ist es, dass ich hintereinander zwei retr-Kommandos an den Server senden kann und mir auf der Seite die beiden Mails hintereinander ausgegeben werden.