Problem beim Email Abrufen von POP3

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

  • Problem beim Email Abrufen von POP3

    Hallo,

    ich habe ein Script um Emails von meinem POP3 Server auszulesen. Dieses Script funktioniert auch hervorragend mit einer kleinen Ausnahme. Wenn mir zum Beispiel jemand von einem GMX Account eine Mail mit dem Absender in der Form "Vorname Nachname <vorname.nachname@gmx.de>" schickt, dann erhalt ich als Absender immer nur "Vorname Nachname" und nicht die Email Adresse. Kann mir jemand helfen.

    Hier ist mein Script:

    PHP-Code:
    <?php
    class pop3 {

        var 
    $strStatus;
        var 
    $pop3;
        var 
    $arrMessages;
        var 
    $arrMessage;

        function 
    pop3 () {
            
    $this->strStatus = array();
            
    $this->pop3 0;
            
    $arrMessages $arrMessage '';
        }

        function 
    open($strServer$intPort 110) {
            
    $this->pop3 fsockopen($strServer$intPort);
            if (!
    is_resource($this->pop3)) return FALSE;
            
    $line fgets($this->pop31024);
            return 
    $this->getresult($line);
        }

        function 
    user($strUser) {
            
    fputs($this->pop3"USER $strUser\r\n");
            
    $line fgets($this->pop31024);
            return 
    $this->getresult($line);
        }

        function 
    pass($strPass) {
            
    fputs($this->pop3"PASS $strPass\r\n");
            
    $line fgets($this->pop31024);
            return 
    $this->getresult($line);
        }
            
        function 
    mess() {
            
    fputs($this->pop3"LIST\r\n");
            
    $line fgets($this->pop31024);
            if (
    $this->getresult($line)) {
                unset(
    $this->arrMessages);
                while(
    substr($line fgets($this->pop31024),0,1) != '.')
                {
                    
    $this->arrMessages[] = $line;
                }
                return 
    TRUE;
            } else {
                return 
    FALSE;
            }
        }

        function 
    retr($strMessage) {
            list(
    $intMessage) = explode(' '$strMessage);
            
    fputs($this->pop3"RETR $intMessage\r\n");
            
    $line fgets($this->pop31024);
            if (
    $this->getresult($line)) {
                unset(
    $this->arrMessage);
                 while(
    substr($line fgets($this->pop31024), ,1) != '.') {
                    
    $this->arrMessage[] = $line;
                 }
                 return 
    TRUE;
            } else {
                return 
    FALSE;
            }
        }

        function 
    dele($intMessage) {
            
    fputs($pop3"DELE $intMessage\r\n");
             
    $line fgets($pop31024);
            return 
    TRUE;
        }

        function 
    quit() {
            
    fputs($this->pop3"QUIT\r\n");
            
    $line fgets($this->pop31024);
            return 
    $this->getresult($line);
        }

        function 
    getresult($line)
        {
            
    $this->strStatus substr($line01024);
            if (
    substr($this->strStatus01) != '+') {
                return 
    FALSE;
            } else {
                return 
    TRUE;
            }
        }
        
        function 
    showresult()
        {
            echo 
    '<code style="color:red">';
            
    print_r($this->strStatus);
            echo 
    '</code><br>';
        }

    /* end class pop3 */

    $mybox = new pop3;
    $popserver ''pop.server.de;
    $username   "username";
    $password   "passwort";
    echo 
    'Verbindung: ';
    $error FALSE;
    while (
    TRUE)
    {
        if (!
    $mybox->open($popserver)) {
           echo 
    "[FEHLER] Verbindung nicht möglich<br>\n";
           
    $mybox->showresult();
           
    $error TRUE;
           break;
        } else {
           echo 
    "erfolgreich<br>\n";
           
    $mybox->showresult();
        }
        echo 
    'Benutzername: ';
        if (!
    $mybox->user($username)) {
           echo 
    "[FEHLER] Benutzername nicht erkannt!<br>\n";
           
    $mybox->showresult();
           
    $error TRUE;
           break;
        } else {
           echo 
    "erfolgreich angemeldet<br>\n";
           
    $mybox->showresult();
        }
        echo 
    'Kennwort: ';  
        if (!
    $mybox->pass($password)) {
           echo 
    "[FEHLER] Kennwort falsch!<br>\n";
           
    $mybox->showresult();
              
    $error TRUE;
           break;
        } else {
           echo 
    "akzeptiert<br>\n";
           
    $mybox->showresult();
        }
        echo 
    'Nachrichten: ';
        if (!
    $mybox->mess()) {
           echo 
    "[FEHLER] Abruf fehlgeschlagen!<br>\n";
           
    $error TRUE;
           break;
        } else {
           echo 
    'erfolgreich <b>' count($mybox->arrMessages) . "</b> gelesen<br>\n";
           
    $mybox->showresult();
        }
        break;
    /* end while */
    echo '<hr noshade size="2">';
    if (!
    $error and is_array($mybox->arrMessages)) {
        foreach(
    $mybox->arrMessages as $strMessage) {
            echo 
    "<b>Nachricht [$strMessage]</b>:<br>\n";
            if (
    $mybox->retr($strMessage)) {
                foreach(
    $mybox->arrMessage as $strData) {
                    echo 
    "$strData<br>";
                }
            } else {
                
    $mybox->showresult();
            }
            echo 
    '<hr noshade size="2">';
        } 
    /* end foreach */
    }
    ?>

  • #2
    Wo hast du es denn runtergeladen? Stand dort nicht auch, wer es geschrieben hat und hast du denjenigen schon gefragt?

    Kommentar


    • #3
      TBT hat für SMTP/POP3 per php einen Codeschnipsel hier im Forum veröffentlicht. Das funktioniert.
      Einfach mal danach suchen.

      Gruß
      Stephan
      [font=Verdana]SteGaSoft
      Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
      [/font]

      Kommentar


      • #4
        Re: Problem beim Email Abrufen von POP3

        Ich möchte wetten, dass du
        Code:
        Vorname Nachname <vorname.nachname@gmx.de>
        als Ausgabe bekommst - im Quelltext.

        Allerdings ist <vorname.nachname@gmx.de> ein "Tag", welches kein HTML darstellender Browser kennt - also wird es ignoriert.


        Wer halbwegs Ahnung von HTML hätte, sollte eigentlich wissen, dass die spitzen Klammern maskiert gehören, wenn sie als Text ausgegeben werden sollen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Tatsächlich. Daran hab ich gar nicht gedacht, das es an den spitzen Klammern liegen könnte.

          Danke !!!

          Kommentar

          Lädt...
          X