marco: php und pop3 ??

ich baue mit php eine verbindung zu einem pop3 server auf. funktioniert auch alles super. nun möchte ich mir eine mail vom server holen. mit folgenden zeilen lasse ihc mir anzeigen, ob eine mail vorhanden ist:

fputs($pop3, command("STAT\r\n"));
echo fgets($pop3, 1024)."<br>";

... passt soweit.

dann möchte ich mir mit dem kommando RETR 1 die mail im browser ausgeben:
fputs($pop3, command("RETR 1\r\n"));
// ausgabe
echo fgets($pop3, 1024)."<br>";

an dieser stelle würde ich nun die ganze mail erwarten, stattdessen erscheint im browser:
RETR 1
+OK 916 octets

wie kann ich mir die gesamte mail im browser ausgeben lassen???

danke.

  1. echo fgets($pop3, 1024)."<br>";

    Das ist nur die erste Zeile des outputs. Hier mußt Du schon mit einer Schleife arbeiten wie z.B.:

    while(!feof($pop3)) {
      echo fgets($pop3,1024),'<br>';
    }

    1. danke, nur leider komme ich mit der schleife nicht weiter :-| die seite lädt anscheinend endlos... was kann man da denn machen?!

      gruss marco

      while(!feof($pop3)) {
        echo fgets($pop3,1024),'<br>';
      }

      1. Hi,

        danke, nur leider komme ich mit der schleife nicht weiter :-| die seite lädt anscheinend endlos... was kann man da denn machen?!

        ein POP3-Server schließt die Verbidung nicht beim Ende des Transfers einer Mail sondern sendet einen "." in einer Zeile.

        Die Schleife _müsste_ also so aussehen (nicht getestet mangels POP3-Server):

        $string = "";
        while($string != ".") {
          $string = fgets($pop3,1024);
          echo $string,'<br>';
        }

        Grüße,

        Christian

        1. hi nochmal,

          habe mir nun die funktion fgets nochmal angesehen und die schleifen ausprobiert. leider klappt das immer noch nicht mit der ausgabe der mail im browser. verwende ich die schleifen, lädt der browser endlos und bricht dann ohne fehler ab.

          wäre echt super, wenn ihr mir nochmals einen tip geben könntet!

          guten abend!

          hier der gesamte code:

          <?
          function command($strCommand) {
             echo $strCommand."<br>";
             return $strCommand;
          }
          /*
             Diese drei Werte muessen auf einen POP3-Server
             eingestellt werden
          */
          $server = "";
          $user   = "";
          $pass   = "";

          $pop3 = fsockopen($server,"110");
          if ($pop3 <= 0) echo "Fehler...";
          echo fgets($pop3, 1024)."<br>";

          fputs($pop3, command("USER $user\r\n"));

          echo fgets($pop3, 1024)."<br>";

          fputs($pop3, command("PASS $pass\r\n"));

          echo fgets($pop3, 1024)."<br>";

          fputs($pop3, command("STAT\r\n"));

          echo fgets($pop3, 1024)."<br>";
          // RETR alleine reicht nicht. man muss die mail numerisch markieren:
          fputs($pop3, command("RETR 1\r\n"));
          // ausgabe

          // schleife:
          $string = "$";
           while($string != ".") {
             $string = fgets($pop3,1024);
             echo $string,'<br>';
           }
          // schleife ende:

          // damit bekomme ich eben nur die eine zeile:
          // echo fgets($pop3, 1024)."<br>";
          //
          fputs($pop3, command("QUIT\r\n"));

          echo fgets($pop3, 1024)."<br>";

          fclose($pop3);
          ?>

          1. Hi,

            while($string != ".") {

            Christian schrieb: 'sondern sendet einen "." in einer Zeile'
            d.h. daß da vermutlich noch ein Zeilenende hinter dem Punkt steht...
            Das mußt Du beim Vergleich dann auch berücksichtigen...

            Andreas

            1. Hi,

              while($string != ".") {
              Christian schrieb: 'sondern sendet einen "." in einer Zeile'
              d.h. daß da vermutlich noch ein Zeilenende hinter dem Punkt steht...
              Das mußt Du beim Vergleich dann auch berücksichtigen...

              Ja klar! - ich Depp! Also:

              while ($string != ".\r\n") {

              Grüße,

              Christian

    2. Hier mußt Du schon mit einer Schleife arbeiten [...]

      Ergänzung: Falls PHP mit --with-imap kompiliert wurde, stehen Dir die komfortablen Funktionen imap_*() zur Verfügung, die sich trotz ihres Namens auch hervorragend für POP3 und NNTP eignen.