POP3 über PHP ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • POP3 über PHP ...

    Hallo an alle.

    Ich habe mich mal an einem minimalistischen POP3-Konto-über-PHP-abrufen-Skript versucht.

    PHP-Code:
    <?
    $fp = fsockopen("pop.gmx.net", 110); echo fgets($fp, 1024).'<br>';
    $user_name = "user"; $user_pass = "pass";
    fputs($fp, "USER $user_name\r\n"); echo fgets($fp, 1024).'<br>';
    fputs($fp, "PASS $user_pass\r\n"); echo fgets($fp, 1024).'<br>';
    fputs($fp, "RETR 1\r\n");
    while  (substr($line  =  fgets($fp, 1024),  0,  1)  <>  ".") 

        $data[$i] = $line; 
        $i++; 

    $data["count"] = $i;
    for ($j=0; $j<$data["count"];$j++)
    {
        echo $data[$j]."<br>\n";
    }
    fputs($fp, "QUIT\r\n"); $line = fgets($fp, 1024);
    fclose($fp);
    ?>
    In diesem Fall weiß ich, dass eine eMail auf meinem Konto liegt. Was er jetzt macht, ist, dass er mir den gesamten Inhalt der eMail anzeigt. Wie schlüssel ich jetzt den Inhalt von $data[] jetzt aber am besten auf, dass ich z.B. nur den Betreff sehen kann? Oder nur den Absender? Oder nur den Inhalt der eMail?

    Danke im Voraus.

    Innuendo

  • #2
    der header endet bei \r\n\r\n

    danach folgt der body der mail.

    im header gibt es eine ZEILE, die mit 'Subject: ' beginnt... da ist dein betreff ...
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      1. Mittels strstr() im String nach "\r\n\r\n" suchen, um den Header herauszufiltern?
      2. Mittels strstr() im String nach "Subject:" suchen, um nur den Betreff herauszufiltern?

      Kommentar


      • #4
        ich habe schon beim einlesen den header vom body getrennt.

        und das auslesen aus dem header habe ich via regex gemacht.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Original geschrieben von Abraxax
          ich habe schon beim einlesen den header vom body getrennt.
          Mal dumm gefragt: Wie hast Du das gemacht? Ist mir schleierhaft, wie ich das bewerkstelligen soll.

          Original geschrieben von Abraxax
          und das auslesen aus dem header habe ich via regex gemacht.
          Mit Sachen wie preg_place() etc.?

          Kommentar


          • #6
            Original geschrieben von Innuendo
            Mal dumm gefragt: Wie hast Du das gemacht? Ist mir schleierhaft, wie ich das bewerkstelligen soll.
            einfach zeilenweise einlesen. wenn eine zeile kommt, in der nur \r\n drin ist, ist da der header zu ende.

            fertig.



            Original geschrieben von Innuendo
            Mit Sachen wie preg_place() etc.?
            preg_match() und/oder preg_match_all() ist da besser....
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Das wird mir zu kompliziert. Ich glaube, ich lasse das erstmal. Danke dennoch.

              Kommentar


              • #8
                hehe. das ist ganz einfach. glaube mir....
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Das ist es ganz sicher .... für Dich ....
                  Vor allem, wenn man bedenkt, dass der gesamte Inhalt einer eMail (Header + eMail-Inhalt) in einer Zeile steht ...
                  Zuletzt geändert von ; 28.07.2003, 13:26.

                  Kommentar


                  • #10
                    Original geschrieben von Innuendo
                    Vor allem, wenn man bedenkt, dass der gesamte Inhalt einer eMail (Header + eMail-Inhalt) in einer Zeile steht ...
                    steht er nicht
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Mit der folgenden Code

                      PHP-Code:
                      <?

                      $fp = fsockopen("pop.gmx.net", 110); echo fgets($fp, 1024).'<br>';
                      $user_name = "user"; $user_pass = "pass";
                      fputs($fp, "USER $user_name\r\n"); echo fgets($fp, 1024).'<br>';
                      fputs($fp, "PASS $user_pass\r\n"); echo fgets($fp, 1024).'<br>';
                      fputs($fp, "RETR 1\r\n");
                      echo '<br>';
                      while (substr($line = fgets($fp, 1024), 0, 1) <> ".") 
                      {
                          echo $line;
                      }
                      fputs($fp, "QUIT\r\n"); $line = fgets($fp, 1024);
                      fclose($fp);

                      ?>
                      steht's bei mir in der Bildschirmausgabe alles in einer Zeile. Also muss der gesamte eMail-Inhalt in einer Zeile stehen. Naja, egal.

                      Wie dem auch sei ... es ist mir zu kompliziert ... danke dennoch ...

                      Kommentar


                      • #12
                        mache mal <pre></pre> um deine ausgabe drumrum oder schaue einfach mal in den quellcode.

                        dann siehst du auch, dass es nicht in einer zeile ist....
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Na schön, dann steht es eben in einer Zeile. Ich sagte ja auch nicht, dass mir DAS zu kompliziert ist, sondern diese preg_match-oder-was-auch-immer-Geschichte. Egal. Ist mir zu kompliziert. Ich versuch' mich jetzt mal an einer anderen Geschichte. Danke dennoch (zum 3. Mal).

                          Kommentar


                          • #14
                            so einfach aufgegeben?

                            zu Regex haben wir n Tutorial!

                            Kommentar


                            • #15
                              @Innuendo

                              ich will dir ja nicht auf den senkel gehen aber damit du weiter kommst..

                              PHP-Code:
                              <?php

                                      
                              function get_from_header($headtag)
                                      {
                                          if (isset(
                              $ma)) unset($ma);
                                          
                              preg_match_all('!'.$headtag.': (.*?)\r\n!'$this->_mess['head'], $ma) ;
                                          if (isset(
                              $ma[1][0]))
                                          {
                                              return 
                              $ma[1][0];
                                          }
                                          else
                                          {
                                              return 
                              false;
                                          }
                                      }

                              ?>
                              damit kannst du aus dem header dein ding auslesen.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X