Mail empfang & decodieren von TBT

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

  • #76
    Hallo,

    danke erstmal TBT für die 2 zur Verfügung gestellten Klassen von dir.

    Ich hab soweit alles ganz gut hinbekommen.
    Jetzt noch ein paar Kleinigkeiten:

    1. Bei der Ausgabe von print_r( $decoded ); zeigt er mir die ganze Zeit einen leeren Return-Path an.

    2. Ich habe desöfteren in ne Test-Mail ein JPEG Bild gepackt. Woran erkenne ich das der Decoder das JPEG Bild bearbeitet hat? Bzw. wie kann ich die wirren Zeichen wieder zu einem optisch bunten Bild zusammenstückeln lassen?

    3. Im Body fehlen mir immer die ersten paar Zeilen

    Hier der Code zum Decodieren:

    PHP-Code:
    // decoder laden
    $decoder = & new MailDecoder();
    $decoded = array();
    // jede mail einzeln decodieren
    foreach( $mails as $mail ) {
        
    $decoded[] = $decoder->decode$mail"\r\n" );
    }
    unset( 
    $decoder );
    // kontrollausgabe
    echo "<pre>";
    print_r $decoded ); 
    Die Decoder-Klasse ist die aktuellste (die dritte, die nicht im PHP-Tag veröffentl. wurde). Habe sonst auch schon alle Themen im Forum durchgelesen und alle möglichen, veröffentlichten Codes probiert, doch die Probleme konnte ich bisher noch nicht lösen.

    Wenn ich weiteren Code posten soll, bitte sagen
    Würde mich über Hilfe freuen

    Kommentar


    • #77
      die decoder-klasse ist nicht so viel wert. TBT hat hier im thread das handtuch geworfen.

      Um das zu testen bitte ich dich, 3 emails zu schicken! Eine reine HTML-Mail, einer Text und Html, und eine rein Text-Mail ohne Anhänge und sowas. Bei der 3 Dritten bleibt der Inhalt im Body leer.

      Also nicht zu gebrauchen. Es gibt ein gute Decoder-Klasse auf phpclasses.org die aber mit pear zusammen arbeitet. Die funzt aber einwandfrei.

      Kommentar


      • #78
        schade... ganze nacht umsonst gearbeitet ;-)
        mal sehen, vielleicht wird`s ja nochmal was

        Kommentar


        • #79
          Original geschrieben von TriphunEM
          die decoder-klasse ist nicht so viel wert. TBT hat hier im thread das handtuch geworfen.
          Wenn du Sie nicht benutzen kannst, ist das leider dein Problem.
          Ich kenne inzwischen genug Leute, die Sie benutzen und wo Sie funktioniert.
          Ich selber habe einen Webmailer auf dieser Basis.

          TBT

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


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #80
            @ TBT

            Könntest du mir bei dem Problem was ich habe (siehe letzten Post von mir) helfen?

            Kommentar


            • #81
              1. Bei der Ausgabe von print_r( $decoded ); zeigt er mir die ganze Zeit einen leeren Return-Path an.
              ist denn einer in der originalen Mail drin, wie sieht der aus?
              2. Ich habe desöfteren in ne Test-Mail ein JPEG Bild gepackt. Woran erkenne ich das der Decoder das JPEG Bild bearbeitet hat? Bzw. wie kann ich die wirren Zeichen wieder zu einem optisch bunten Bild zusammenstückeln lassen?
              na logisch zeigt er nur Müll an, das sind Binärdaten. Sende mal einen JPEG Header, und dann diesen "Müll" mit echo hinterher, dann siehst du dein Bild. Oder schreibe diesen "Müll" binär in eine Datei.jpg
              3. Im Body fehlen mir immer die ersten paar Zeilen
              Beispiel?
              Hier der Code zum Decodieren:

              PHP-Code:
              // decoder laden
              $decoder = & new MailDecoder();
              $decoded = array();
              // jede mail einzeln decodieren
              foreach( $mails as $mail ) {
                  
              $decoded[] = $decoder->decode$mail"\r\n" );
              }
              unset( 
              $decoder );
              // kontrollausgabe
              echo "<pre>";
              print_r $decoded ); 
              und dein System benutzt wirklich \r\n als Zeilenumbruch, und nicht etwa nur \r oder nur \n
              TBT

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


              PHP 2 AllPatrizier II Browsergame

              Kommentar


              • #82
                Original geschrieben von TriphunEM
                was ich auch nicht versteh mein return-path im header ist immer leer!?
                dann schau dir bitte mal den Quelltext der Ausgabeseite an!
                Bei steht da immer sowas

                <mail@irgendwo.domain>

                was logischerweise durch den Browser nicht angezeigt wird!
                TBT

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


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #83
                  Original geschrieben von TBT
                  ist denn einer in der originalen Mail drin, wie sieht der aus?
                  Hab jetzt gesehen das er in die DB den Return-Path mit eintragt.

                  na logisch zeigt er nur Müll an, das sind Binärdaten. Sende mal einen JPEG Header, und dann diesen "Müll" mit echo hinterher, dann siehst du dein Bild. Oder schreibe diesen "Müll" binär in eine Datei.jpg

                  OK

                  und dein System benutzt wirklich \r\n als Zeilenumbruch, und nicht etwa nur \r oder nur \n
                  Nun auf \n umgestellt, funktioniert jetzt einwandfrei. Er verschluckt mir keine Zeilen mehr.

                  Soweit mal danke. Werde jetzt dann das System ein wenig genauer testen & einbinden. Falls noch was ist schreib ich wieder ;-)

                  Kommentar


                  • #84
                    Fast hätt ich`s vergessen.
                    1 Problem hab ich noch:

                    Ich hab 1 Text-Mail und 1 Text-Mail mit Anhang im Postfach liegen. Wenn ich das nun mit dem Skript abrufe zeigt er mir 2 unterschiedliche Header, jedoch bleibt der Body der 2. Mail mit dem Inhalt der 1. gefüllt.

                    Er zeigt mir also mit der print_r($decoded); Ausgabe 2 mal den Body der 1. Mail.

                    Kommentar


                    • #85
                      korrekt, da er bei einem erneutem Aufruf von decode die internen Variablen nicht zurück setzt.
                      Das könnte man noch einbauen
                      TBT

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


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #86
                        gut, dann noch 1 sache die mir auffällt: Befinden sich mehr als 1 Bild im Anhang einer Mail wird nur das erste gespeichert??

                        Zumindest steht nur einmal text da wie:

                        Content-Type: image/jpeg; name="29.jpg"
                        Content-transfer-encoding: base64
                        Content-Disposition: attachment; filename="29.jpg"

                        Also speichert er mir das so in der DB nicht korrekt, wobei er es aber bei der print_r($mails) Ausgabe richtig anzeigt.

                        Weiters steh ich noch vor einem Problem, wo ich nicht genau weis wie ich das lösen soll / kann.
                        Ich möchte sämtliche Bilder (rein JPEG) als .jpg Datei speichern, die Namen dafür selbst vergeben. Ich meine, wie ich base64 Dekodieren durchführe und wie ich speichere weis ich, doch wie bekomme ich genau dieses "zahlen-wirrwar" in eine variable?

                        Kommentar


                        • #87
                          base64_decode ist durch den Decoder bereits erledigt.
                          Dieser zerlegt die Mail in Einzelteile, das zu speichern etc. ist deine Aufgabe.
                          Schau dir die Struktur an, dann kommst du auch an die Daten

                          in deinem Beispiel müßte das sein

                          $decoded[0]['body][2]['body']
                          TBT

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


                          PHP 2 AllPatrizier II Browsergame

                          Kommentar


                          • #88
                            Original geschrieben von TBT
                            $decoded[0]['body][2]['body']
                            Hab mir die Struktur angeschaut, werde jedoch nicht schlau draus, unter deiner angegebenen lösung (quote) kommt nichts, mit einigen anderen varianten die ich versucht habe auch nix. ich steh total an. die mail selbst ist mir doch egal, ich möchte doch lediglich die einzelnen bilder aus dem anhang rauslesen.

                            Kommentar


                            • #89
                              die Struktur ist ganz simpel, jeder gefundene Text wird untersucht, ob er ein Mimeteil ist, und in das Array geschrieben

                              bei einer Mime Mail:
                              Code:
                              array( 
                                 [header] => array( 
                                    [header 1.Zeile] => '...',
                                    [header 2.Zeile] => '...' 
                                    ),
                                 [body] => array(
                                    [1.Teil vom body (0)] => array( 
                                       [header vom 1. Teil body] => array( 
                                          [header 1.Zeile] => '...',
                                          [header 2.Zeile] => '...' 
                                       ),
                                       [body vom 1 Teil body] => 'zb ein Plain/Text' 
                                    ),
                                    [2.Teil vom body (1)] => array( 
                                       [header vom 2. Teil body] => array( 
                                          [header 1.Zeile] => '...',
                                          [header 2.Zeile] => '...' 
                                       ),
                                       [body vom 2 Teil body] => 'zb ein HTML/Text' 
                                    ),
                                    [3.Teil vom body (2)] => array( 
                                       [header vom 3. Teil body] => array( 
                                          [header 1.Zeile] => '...',
                                          [header 2.Zeile] => '...' 
                                          ),
                                       [body vom 3 Teil body] => 'zb Binärdaten (Dateianhang)' 
                                       ),
                                   )
                              )
                              bei einer nicht Mime Mail:
                              Code:
                              array( 
                                 [header] => array( 
                                    [header 1.Zeile] => '...',
                                    [header 2.Zeile] => '...' 
                                    ),
                                 [body] => 'Text ....'
                              )
                              du brauchst also nur das Array $decode[body] durchgehen, und schauen wo Binärdaten drin sind
                              TBT

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


                              PHP 2 AllPatrizier II Browsergame

                              Kommentar


                              • #90
                                Ok, mit

                                PHP-Code:
                                $decoded[0][body
                                erhalte ich den gesamten Body:

                                PHP-Code:
                                Mit freundlichen Grüßen,

                                xxx

                                ::::::::::::::::::::::::::::::::::::
                                  
                                Start in wenigen Wochen
                                ::::::::::::::::::::::::::::::::::::
                                Signatur
                                ::::::::::::::::::::::::::::::::::::
                                ------------
                                281BB19E1A5CD058
                                Content
                                -Typeimage/jpegname="700-550146w.jpg"
                                Content-transfer-encodingbase64
                                Content
                                -Dispositionattachmentfilename="700-550146w.jpg"

                                /9j/4AAQSkZJRgABAgEASABIAAD/4QRaRXhpZgAATU0AKgAAAAgAD
                                AEOAAIAAABRAAAAngEPAAIAAAAGAAAA7wEQAAIAAAAOAAAA9QES
                                AAMAAAABAAEAAAEaAAUAAAABAAABAwEbAAUAAAABAAABCwEoAA
                                MAAAABAAIAAAExAAIAAAAUAAABEwEyAAIAAAAUAAABJwE7AAIAAA
                                APAAABO4KY
                                ........ 
                                Jetzt muss ich nur noch an die Binär-Daten kommen. Mit allen anderen möglichen Kombinationen der decoded[body] erhalte ich keine Ausgabe. Hab mir die Struktur in der maildecode.php angeschaut, doch auch mit [0], [1], [2] oder [3] erhalte ich keine Ausgabe.

                                Im Prinzip könnte ich doch mit preg_match(...) die richtigen Passagen rausfiltern, oder?

                                Kommentar

                                Lädt...
                                X