Mails in PHP lesen

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

  • #91
    und welche ist zeile 62?
    PHP-Code:
      $headers    implode("\n",$h); 

    du übergibst den Header mit den \r\n dadrin und ohne vorher nl2br() rüberlaufen zu lassen
    Das sollte dann doch so aussehen
    PHP-Code:
    $h .=  ( $headers[$line] ) . "\r\n"
    aber es kommt immer onch der selbe Fehler

    Kommentar


    • #92
      wenn du mit

      $h .= ( $headers[$line] ) . "\r\n";

      arbeitest, ahst du doch schon einen String, und brauchst kein implode mehr!
      Wenn du dies mit dem Body auch so gemacht hast, ist $mail logischerweise dann

      $mail = $h."\r\n".$b;
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #93
        Das ist mein Code
        PHP-Code:
        ...
              
            if ( 
        in_array$ids[$ii], $alreadyhave ) )  { // alreadyhave ist ein Array mit Mailids
                            
        continue; // welche nicht nochmal vom Server geholt werden
                        
        }
                        
        $headers $body $h $b "";
                        if ( ( 
        $pop3error $pop3->retrieve$ii$headers$body ) ) == "" ) {
                            for( 
        $line 0;$line count$headers );$line++ ) {
                                
        $h .=  ( $headers[$line] ) . "\r\n";

                            }
                            for( 
        $line 0;$line count$body );$line++ ) {
                                
        $b .= ( $body[$line] ) . "\r\n";

                            }



                           
        $row1 "  $ids[$ii]  ";
                           
        $row "('" $ids[$ii] . "'," $server[$i][0] . ",'$h','$b')";


                        }
                        
        $sql .= ( $sql?",":"" ) . $row;
                    } }

                }


        $mail $h."\r\n".$b;
            
        $decoder = new MailDecoder();
            
        $tmp $decoder->decode$mail );
            
        print_r$tmp );

            }

        if ( 
        $pop3error ) {
            echo 
        $pop3error;
        }
        $pop3->disconnect(); 
        Was dabei raus kommt ist nichts

        Kommentar


        • #94
          Original geschrieben von themonk
          Das ist mein Code

          ...

          Was dabei raus kommt ist nichts
          welchen du erstmal so reduzieren kannst ... ($sql wurde rausgenommen, da erstmal das decodieren wichtig ist)
          PHP-Code:
          // ...
          {
              if ( 
          in_array$ids[$ii], $alreadyhave ) )  { // alreadyhave ist ein Array mit Mailids
                  
          continue; // welche nicht nochmal vom Server geholt werden
              
          }
              
          // mail abholen
              
          $headers $body "";
              if ( ( 
          $pop3error $pop3->retrieve$ii$headers$body ) ) != "" ) {
                  
          // fehler aufgetreten
                  
          echo $pop3error;
                  die();
              }
              
          // mail decodieren
              
          $decoder = new MailDecoder();
              
          $tmp $decoder->decodeimplode("\n",$headers)."\n\n".implode("\n",$body) );
              
          // kontrollausgabe
              
          print_r$tmp );
          }
          $pop3->disconnect(); 
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #95
            so habe den code jetzt eingefügt aber jetzt kommt wieder
            Array ( [header] => Array ( ) [body] => Array ( ) )

            Kommentar


            • #96
              dann muß es was anderes sein,
              ich habe gerade deine obige Mail als Datei gespeichert
              Code:
              Return-Path:
              X-Original-To:mail@mail.de
              Delivered-To: [email]user@ipx10799.ipxserver.de[/email]
              Received: from mail.gmx.net (pop.gmx.de [213.175.64.20])
              by ipx10799.ipxserver.de (Postfix) with SMTP id E07CA354102
              for ; Wed, 12 Jan 2005 13:13:02 +0100 (CET)
              Received: (qmail 26021 invoked by uid 0); 12 Jan 2005 12:12:55 -0000
              Received: from 217.777.56.61 by www70.gmx.net with HTTP;
              Wed, 12 Jan 2005 13:12:55 +0100 (MET)
              Date: Wed, 12 Jan 2005 13:12:55 +0100 (MET)
              From: "absender"
              To: [email]mail@mail.de[/email]
              MIME-Version: 1.0
              Content-Type: multipart/mixed; boundary="========GMXBoundary257941105531975"
              Subject: Testbild
              X-Priority: 3 (Normal)
              X-Authenticated: #9752341
              Message-ID: <25794.1105531975@www70.gmx.net>
              X-Mailer: WWW-Mail 1.6 (Global Message Exchange)
              X-Flags: 0001
              X-UIDL: @a[!!GI=!!JVb!!Lk~"!
              Status: RO (das sagt $headers)
              
              
              This is a MIME encapsulated multipart message -
              please use a MIME-compliant e-mail program to open it.
              
              Dies ist eine mehrteilige Nachricht im MIME-Format -
              bitte verwenden Sie zum Lesen ein MIME-konformes Mailprogramm.
              
              --========GMXBoundary257941105531975
              Content-Type: text/plain; charset="us-ascii"
              Content-Transfer-Encoding: 7bit
              
              Textmit bild
              
              
              
              +++ Sparen Sie mit
              --========GMXBoundary257941105531975
              Content-Type: image/x-png; name="banner.png"
              Content-Transfer-Encoding: base64
              Content-Disposition: attachment; filename="banner.png"
              
              iVBORw0KGgoAAAANSUhEUgAAAbcAAACjCAIAAACGxceFAAAABnRSTlMAfwB+AH1l/zhUAAAABmJL
              
              --========GMXBoundary257941105531975
              und durch den decoder gejagt erhalte ich
              Code:
              Array
              (
                  [header] => Array
                      (
                          [Delivered-To] => [email]user@ipx10799.ipxserver.de[/email]
                          [Received] => from 217.777.56.61 by www70.gmx.net with HTTP; Wed, 12 Jan 2005 13:12:55 +0100 (MET)
                          [Date] => Wed, 12 Jan 2005 13:12:55 +0100 (MET)
                          [From] => "absender"
                          [To] => [email]mail@mail.de[/email]
                          [MIME-Version] => 1.0
                          [Content-Type] => multipart/mixed; boundary="========GMXBoundary257941105531975"
                          [Subject] => Testbild
                          [X-Priority] => 3 (Normal)
                          [X-Authenticated] => #9752341
                          [Message-ID] => <25794.1105531975@www70.gmx.net>
                          [X-Mailer] => WWW-Mail 1.6 (Global Message Exchange)
                          [X-Flags] => 0001
                          [X-UIDL] => @a[!!GI=!!JVb!!Lk~"!
                          [Status] => RO (das sagt $headers)
                      )
              
                  [body] => Array
                      (
                          [0] => Array
                              (
                                  [header] => Array
                                      (
                                      )
              
                                  [body] => Array
                                      (
                                      )
              
                              )
              
                          [1] => Array
                              (
                                  [header] => Array
                                      (
                                          [Content-Type] => text/plain; charset="us-ascii"
                                          [Content-Transfer-Encoding] => 7bit
                                      )
              
                                  [body] => Textmit bild
              
              
              
              +++ Sparen Sie mit
                              )
              
                          [2] => Array
                              (
                                  [header] => Array
                                      (
                                          [Content-Type] => image/x-png; name="banner.png"
                                          [Content-Transfer-Encoding] => base64
                                          [Content-Disposition] => attachment; filename="banner.png"
                                      )
              
                                  [body] => ‰PNG
              
                              )
              
                      )
              
              )
              es geht also, anscheinend hat er aber noch Probleme mit dem
              Code:
              This is a MIME encapsulated multipart message -
              please use a MIME-compliant e-mail program to open it.
              
              Dies ist eine mehrteilige Nachricht im MIME-Format -
              bitte verwenden Sie zum Lesen ein MIME-konformes Mailprogramm.
              ohne Mime Auszeichnung
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Kommentar


              • #97
                Original geschrieben von TBT
                anscheinend hat er aber noch Probleme mit dem
                Code:
                This is a MIME encapsulated multipart message -
                please use a MIME-compliant e-mail program to open it.
                
                Dies ist eine mehrteilige Nachricht im MIME-Format -
                bitte verwenden Sie zum Lesen ein MIME-konformes Mailprogramm.
                ohne Mime Auszeichnung
                Klasse korrigiert, dies geht nun auch
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #98
                  dies geht nun auch
                  Ja jetzt wird bei Body der body angezeigt

                  Array ( [header] => Array ( ) [body] => This is a MIME encapsulated multipart message - please use a MIME-compliant e-mail program to open it. Dies ist eine mehrteilige Nachricht im MIME-Format - bitte verwenden Sie zum Lesen ein MIME-konformes Mailprogramm. --========GMXBoundary257941105531975 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Textmit bild -- +++ Sparen Sie mit GMX DSL +++ http://www.gmx.net/de/go/dsl AKTION f?echsler: DSL-Tarife ab 3,99 EUR/Monat + Startguthaben --========GMXBoundary257941105531975 Content-Type: image/x-png; name="banner.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="banner.png" iVBORw0KGgoAAAANSUhEUgAAAbcAAACjCAIAAACGxceFAAAABnRSTlMAfwB+AH1l/zhUAAAABmJL
                  Und das ist der Code

                  PHP-Code:
                  $pop3 =  new POP3$server$port$user$pass );

                  if ( !
                  $pop3error $pop3->open() ) {
                      if ( !
                  $pop3error $pop3->login() ) {
                          if ( !
                  $pop3error $pop3->stat() ) {
                              
                  $mail_sizes $pop3->listing();
                              
                  $ids $pop3->ids();
                              
                  $row "";
                              for( 
                  $ii 1;$ii <= count$mail_sizes );++$ii ) {
                  $result mysql_query('SELECT server_id FROM mails');
                  $alreadyhave = array();
                  while (
                  $row mysql_fetch_assoc($result))
                  {
                  $alreadyhave[] = $row['server_id'];
                  }


                  {
                      if ( 
                  in_array$ids[$ii], $alreadyhave ) )  { // alreadyhave ist ein Array mit Mailids
                          
                  continue; // welche nicht nochmal vom Server geholt werden
                      
                  }
                      
                  // mail abholen
                      
                  $headers $body "";
                      if ( ( 
                  $pop3error $pop3->retrieve$ii$headers$body ) ) != "" ) {
                          
                  // fehler aufgetreten
                          
                  echo $pop3error;
                          die();
                      }
                          }
                          }
                          }
                          }
                      
                  // mail decodieren
                      
                  $decoder = new MailDecoder();
                      
                  $tmp $decoder->decodeimplode("\n",$headers)."\n\n".implode("\n",$body) );
                      
                  // kontrollausgabe
                      
                  print_r$tmp );
                  }     
                  $pop3->disconnect(); 

                  Kommentar


                  • #99
                    haut totzdem nicht hin, er zerlegt die Boundarys nicht

                    was hast du für ein Betriebssystem?
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • Original geschrieben von TBT
                      haut totzdem nicht hin, er zerlegt die Boundarys nicht
                      wie auch, es ist ja kein Header da, der sagt, wo die Klasse trennen muss...
                      Oder hast du provisorisch einen reingesetzt in $headers?

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • was hast du für ein Betriebssystem?
                        Win 2000

                        Oder hast du provisorisch einen reingesetzt in $headers?
                        Meinst du damit jetzt TBT oder mich?
                        Ich habe nirgends etwas provisorisch reingesetzt


                        Hier könnt ihr mal selbst sehen
                        http://test.h-denkena.de/mail.php

                        Edit:
                        Bei
                        PHP-Code:
                        $c = ( implode("\n",$headers)."\n\n".implode("\n",$body)) ;
                        print 
                        $c
                        wir sowohl der Header als auch der Body angezeigt
                        Zuletzt geändert von themonk; 17.01.2005, 12:48.

                        Kommentar


                        • falls du dir mal deine Ausgabe im Quelltext anschaust, siehst du, dass der Header bei dir nach dem Body kommt.

                          hast du eventuell $header und $body vertauscht
                          TBT

                          Die zwei wichtigsten Regeln für eine berufliche Karriere:
                          1. Verrate niemals alles was du weißt!


                          PHP 2 AllPatrizier II Browsergame

                          Kommentar


                          • hast du eventuell $header und $body vertauscht
                            keinen Ahnung wo du meinst.
                            Ist das so falsch?
                            PHP-Code:
                                $tmp $decoder->decodeimplode("\n",$headers)."\n\n".implode("\n",$body) ); 
                            kann sein das du gerade geguckt hast als ich was ausprobiert habe. Jetzt ist alles so wie vorher

                            Kommentar


                            • Hallo
                              ich habe jetzt schon vielles Probiert aber das was raus kommt sidn nur Fehler
                              Ich habe mir auch schon ne Mail von web geschickt nur das ändert nicht viel.
                              Wisst ihr denn auch nicht mehr weiter?

                              Kommentar


                              • E-Mail Decodieren geht immer noch nicht

                                Hallo
                                ich versuch mit den Code Schnipseln von TBT seid 1 Monat E-Mail anhänge zu decodieren nur es Funktioniert nicht es wird nichts decodiert.
                                Die maildecoder2.class und pop3.class habe ich nicht verändert.
                                Die Index sieht so aus:

                                PHP-Code:
                                  mysql_connect("localhost",
                                  
                                "user","pw") or die
                                  (
                                "Keine Verbindung moeglich");
                                  
                                mysql_select_db("db") or die
                                  (
                                "Die Datenbank existiert nicht");



                                include 
                                'pop3.class.php';
                                include 
                                'maildecoder2.class.php';
                                         
                                $server "localhost";
                                         
                                $port 110;
                                         
                                $user "user";
                                         
                                $pass "pw";
                                $pop3 =  new POP3$server$port$user$pass );

                                if ( !
                                $pop3error $pop3->open() ) {
                                    if ( !
                                $pop3error $pop3->login() ) {
                                        if ( !
                                $pop3error $pop3->stat() ) {
                                            
                                $mail_sizes $pop3->listing();
                                            
                                $ids $pop3->ids();
                                            
                                $row "";
                                            for( 
                                $ii 1;$ii <= count$mail_sizes );++$ii ) {
                                $result mysql_query('SELECT server_id FROM mails');
                                $alreadyhave = array();
                                while (
                                $row mysql_fetch_assoc($result))
                                {
                                $alreadyhave[] = $row['server_id'];
                                }


                                {
                                    if ( 
                                in_array$ids[$ii], $alreadyhave ) )  { // alreadyhave ist ein Array mit Mailids
                                        
                                continue; // welche nicht nochmal vom Server geholt werden
                                    
                                }
                                    
                                // mail abholen
                                    
                                $headers $body "";
                                    if ( ( 
                                $pop3error $pop3->retrieve$ii$headers$body ) ) != "" ) {
                                        
                                // fehler aufgetreten
                                        
                                echo $pop3error;
                                        die();
                                    }
                                        }
                                        }
                                        }
                                        }
                                    
                                // mail decodieren
                                    
                                $decoder = new MailDecoder();
                                    
                                $tmp $decoder->decodeimplode("\n",$headers)."\n\n".implode("\n",$body) );
                                    
                                // kontrollausgabe
                                    
                                print_r$tmp );
                                }
                                $pop3->disconnect();




                                echo 
                                "<br><br>";
                                print_r$headers ); ## hier wird der Header zum Testen angezeigt 
                                Zuletzt geändert von themonk; 19.02.2005, 12:22.

                                Kommentar

                                Lädt...
                                X