problem mit fputs
marco
- php
hi, habe ein problem mit folgender zeile, die ich in einer schleife verwende um mails von einem pop3 server zu holen.
so funktioniert alles bestens:
fputs($pop3, command("RETR 2\r\n"));
statt der zwei soll hier eben $i stehen, da ich mir ja jede mail holen möchte. das sieht dann so aus:
fputs($pop3, command("RETR $i\r\n"));
das funzt dann nicht mehr, das browserfesbter bleibt weiss.
hier nochmal die gesamte schleife wie ich sie mir vorstelle:
for($i=0; $i<=3; $i++)
{
echo $i."<br>";
$test ="testio";
fputs($pop3, command("RETR $i\r\n"));
// schleife:
$string = "$pop3";
while ($string != ".\r\n") {
$string = fgets($pop3,1024);
echo $string,'<br>';
}
// schleife ende:
}
weiss jemand rat, wie ich $i dort rein bekomme???
thanx!
fputs($pop3, command("RETR ".$i".\r\n"));
weiss jemand rat, wie ich $i dort rein bekomme???
villeicht klappts so?
fputs($pop3, command("RETR ".$i."\r\n"));
sorry eher so...
uli
fputs($pop3, command("RETR ".$i."\r\n"));
nö, leider nicht :-| das ist echt seltsam, andere variablen kann ich ohne probleme ausgeben. auch $i kann ich ausgeben, eben nur nicht an der stelle!
folgendes beispiel funktioniert eben auch:
fputs($pop3, command("RETR 2$test$i\r\n"));
nur wie gesagt ein $i anstelle der "2" führt zu keinem ergebnis!
das verwirrt mich etwas?! wer kann das nachvollziehen?
dankesehr.
for($i=0; $i<=3; $i++)
^
Gemäß RFC1939 gibt es bei POP3 keine Message 0, die Zählung beginnt bei 1. RETR 0 liefert daher eine Fehlermeldung in der Art "-ERR Message 0 does not exist.". Diese einzeilige Fehlermeldung endet logischerweise nicht mit einer einzelnen Zeile ".\r\n" weswegen die while-Schleife nicht abbricht und zu einer Endlosschleife wird.
P.S.: Hie und da ein flush() täte dem debugging gut...
Schönen Wahltag Marco,
ich bin ja vielleicht auf dem falschen Dampfer, aber ich versteh nicht, was die Funktion command() macht. Könntest Du mir das bitte mal kurz erläutern.
fputs($pop3, command("RETR 2\r\n"));
das Kommando, das mit fputs() übertragen werden muss, heißt doch "RETR $nr\r\n" wobei $nr die nummer der abzuholenden eMail ist.
for($i=0; $i<=3; $i++)
{
echo $i."<br>";
$test ="testio";
//fputs($pop3, command("RETR $i\r\n"));
fputs($pop3, "RETR $i\r\n");
// schleife:
$string = "$pop3";
while ($string != ".\r\n") {
$string = fgets($pop3,1024);
echo $string,'<br>';
}
// schleife ende:
}
Laut meiner Literatur hat das so zu funktionieren. Mein Prak hats auch genauso ausprobiert. Wenn's jetzt nicht stimmt, muss ich seine "Doku" und mein Buch zerreissen.
Liebe Grüße aus http://www.braunschweig.de
Tom