Mails in PHP lesen

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

  • #46
    Original geschrieben von themonk
    Bei sql habe ich jetzt ja noch diese Durcheinandere wie bekomme ich das weg? Dies hat sich vielleicht schon mit der nächsten frage erübrigt. Wie soll den jetzt der Eintrag in die Datenbank vorgenommen werden, wenn ich die Zeilen Empfaenger, Absender, Betreff, Body(Text),Anhang,mailserver_id und server_id habe

    Ich habe den unteren Fehler so gelöst
    PHP-Code:
        mysql_query("insert into mails (mailserver_id,server_id,header,body) values ('1','2','3','4')" ) or die(mysql_error()); 
    Also, der komplette Header wird in Header gespeichert, extrahiert wird später. Mit dem Body das Selbe, der Anhang ist im Body mit drin, die mailserver_id, ist bei dir doch hinfällig, weil du nur ein Postfach nutzt, oder? (Da steht normalerweise eine ID drin, um in einer anderen Tabelle nachzugucken, zu welchen Postfach die Mail gehört!) und die Server_Id wird auch eingetragen und damit hast du dann doch deine Struktur, oder nicht?

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

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

    Kommentar


    • #47
      und die Server_Id wird auch eingetragen und damit hast du dann doch deine Struktur, oder nicht?
      Ja? Wo wird den die Server_Id eingetragen?
      also Body ist $b und header ist $h und mailserver_id kann ich raus lassen
      Nun muss ich nur noch das ganze Zerteilen den so wieder der Header jetzt aussieht kann man den ja kaum entziffern.

      So irgendwie?
      PHP-Code:
      preg_match('#Subject: (.*)#i',$h,$subject);
      preg_match('#From: (.*)#i',$h,$from); 
      Da wird bei mir nichts angezeigt
      Zuletzt geändert von themonk; 11.01.2005, 17:27.

      Kommentar


      • #48
        Original geschrieben von themonk
        Ja? Wo wird den die Server_Id eingetragen?
        In der Datenbank? Oder meinst du in welcher Variablen?
        Also in dem Beispiel von TBT da:
        $server[$i][0]

        Nun muss ich nur noch das ganze Zerteilen den so wieder der Header jetzt aussieht kann man den ja kaum entziffern
        Wie sieht der denn aus???

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

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

        Kommentar


        • #49
          Hallo,
          wenn ich jetzt $row ausgebe kommt da 0 kann das sein?
          $row = "(" . $server[$i][0] . ")";


          Der header ishet jetzt so aus
          Return-Path: X-Original-To: mail@mail.de Delivered-To: web123p1@ipx10799.ipxserver.de Received: from mail.gmx.net (pop.gmx.de [217.165.64.20]) by ipx10799.ipxserver.de (Postfix) with SMTP id CF445354102 for ; Tue, 11 Jan 2005 14:08:31 +0100 (CET) Received: (qmail 26915 invoked by uid 0); 11 Jan 2005 13:08:25 -0000 Received: from 217.228.56.61 by www74.gmx.net with HTTP; Tue, 11 Jan 2005 14:08:25 +0100 (MET) Date: Tue, 11 Jan 2005 14:08:25 +0100 (MET) From: \"name des senders\" To:mail@mail.de MIME-Version: 1.0 Subject: 123 X-Priority: 3 (Normal) X-Authenticated: #9752341 Message-ID: <18603.1105448905@www74.gmx.net> X-Mailer: WWW-Mail 1.6 (Global Message Exchange) X-Flags: 0001 Content-Type: text/plain; charset=\"us-ascii\" Content-Transfer-Encoding: 7bit X-UIDL: Af6!!UmJ!!Ik9!!`^i\"! Status: RO

          Kommentar


          • #50
            Original geschrieben von themonk
            Hallo,
            wenn ich jetzt $row ausgebe kommt da 0 kann das sein?
            $row = "(" . $server[$i][0] . ")";
            jep, das kann sein, das ist die Variable, die du ignorieren solltest *drop*
            Ich meinte die hier: $ids[$ii], sorry ^_^"

            Der header ishet jetzt so aus
            Lass mal vor der Ausgabe den Text durch die Funktion nl2br jagen und poste die Ausgabe dann nochmal.

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

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

            Kommentar


            • #51
              Hallo
              Bei
              PHP-Code:
              $row "('" $ids[$ii] . "')"
              kommen 2 Zahlen sicher sind das nun die richtigen da ich ja auch 2 Mails habe die Zahlen sehen so aus 1090 ,1099


              Lass mal vor der Ausgabe den Text durch die Funktion nl2br jagen und poste die Ausgabe dann nochmal.

              Return-Path:
              X-Original-To: mail@mail.de
              Delivered-To: web123p1@ipx10799.ipxserver.de
              Received: from mail.gmx.net (pop.gmx.de [217.165.64.20])
              by ipx10799.ipxserver.de (Postfix) with SMTP id CF445354102
              for ; Tue, 11 Jan 2005 14:08:31 +0100 (CET)
              Received: (qmail 26915 invoked by uid 0); 11 Jan 2005 13:08:25 -0000
              Received: from 219.228.56.61 by www74.gmx.net with HTTP;
              Tue, 11 Jan 2005 14:08:25 +0100 (MET)
              Date: Tue, 11 Jan 2005 14:08:25 +0100 (MET)
              From: \"name\"
              To: mail@mail.de
              MIME-Version: 1.0
              Subject: 123
              X-Priority: 3 (Normal)
              X-Authenticated: #9752341
              Message-ID: <18603.1105448905@www74.gmx.net>
              X-Mailer: WWW-Mail 1.6 (Global Message Exchange)
              X-Flags: 0001
              Content-Type: text/plain; charset=\"us-ascii\"
              Content-Transfer-Encoding: 7bit
              X-UIDL: Af6!!UmJ!!Ik9!!`^i\"!
              Status: RO
              Jetzt sieht das ganze schon geordneter aus nur solche dinge wie X-Authenticated: #9752341 brauche ich doch garnicht

              Kommentar


              • #52
                kommen 2 Zahlen sicher sind das nun die richtigen da ich ja auch 2 Mails habe die Zahlen sehen so aus 1090 ,1099
                OffTopic:
                denkst du eigentlich genau so, wie du schreibst?

                Kommentar


                • #53
                  Original geschrieben von themonk
                  Hallo
                  Bei
                  PHP-Code:
                  $row "('" $ids[$ii] . "')"
                  kommen 2 Zahlen sicher sind das nun die richtigen da ich ja auch 2 Mails habe die Zahlen sehen so aus 1090 ,1099
                  Das müssten sie dann sein, sind zwar irgendwie ziemlich kurz, aber egal...kannst ja mal noch ne Testmail schicken und dann die Zahl davon mal posten.

                  Jetzt sieht das ganze schon geordneter aus nur solche dinge wie X-Authenticated: #9752341 brauche ich doch garnicht [/B]
                  Das stört aber alles nicht.
                  Du speicherst den Header so in der Datenbank. Die Funktion nl2br wandelt nämlich alle Whitespace-Umbruche in ein <br /> um, d.h. da sind auch ohne die Funktion schon Umbrüche, nur die sieht man bei der Ausgabe nicht (im HTML-Code der Seite müssten sie jedoch wieder zu finden sein!)
                  Wenn du dann später die Mails anzeigen willst, hast du ja die kompletten Daten der Mail, also auch den Header. Und dann verwendest du die preg_match, siehe viel weiter vorne im Thread, wo ich damit gezeigt hatte, wie man das Subject extrahieren kann, um die Sachen zu finden, die du haben möchtest.
                  Außerdem kannst du damit dann auch auf den MIME-Header prüfen und ggf. den Body der Mail anders behandeln, siehe auch weiter oben.

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

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

                  Kommentar


                  • #54
                    OffTopic:
                    Original geschrieben von penizillin
                    OffTopic:
                    denkst du eigentlich genau so, wie du schreibst?
                    Dazu fällt mir ganz spontan das ein
                    http://www.lugbz.org/documents/smart...html#writewell
                    (Okay, so spontan nicht, ich hab's gestern mal wieder gelesen...)

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

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

                    Kommentar


                    • #55
                      Hallo,
                      habe nun die Mail Zerlegt.
                      PHP-Code:
                      preg_match('#From: (.*)#i',$text ,$From);

                      echo 
                      "<br><br>";
                      echo 
                      "$From[0]"
                      Da wird jetzt "From: Name" angezeigt.
                      Das ist auch gut so nur jetzt habe ich da den Namen, jetzt fehlt mir die E-Mail adresse von dem Absender.
                      Und dann nochetwas. Ich habe versucht den Namen vor dem @ raus zu filtern nur das funktioniert nicht.
                      Zuletzt geändert von themonk; 12.01.2005, 14:31.

                      Kommentar


                      • #56
                        Original geschrieben von themonk
                        Hallo,
                        habe nun die Mail Zerlegt.
                        PHP-Code:
                        preg_match('#From: (.*)#i',$text ,$From);

                        echo 
                        "<br><br>";
                        echo 
                        "$From[0]"
                        Da wird jetzt "From: Name" angezeigt.
                        Aber das ist nicht dass, was du extrahieren solltest...wieso verwendest du nicht das, was ich schon gepostet hatte???
                        PHP-Code:
                        // Für das Subject
                        $pattern "#Subject: (.+)\r\n#U";
                        preg_match($pattern$header_der_mail$matches);
                        echo 
                        '<pre>' print_r($matchestrue) . '</pre>'
                        In $matches[1] sollte dann nur das sein, was dahinter steht, ohne Umbruch usw. dein Pattern sieht mir etwas....zusammengewürfelt aus..., den Modifier i kannst du ja noch anhängen, zur Not kannst du auch noch das + in einen * umwandeln, aber grade das wichtige (\n\r als Ende) solltest du drin lassen!

                        Das ist auch gut so nur jetzt habe ich da den Namen, jetzt fehlt mir die E-Mail adresse von dem Absender.
                        Und dann nochetwas. Ich habe versucht den Namen vor dem @ raus zu filtern nur das funktioniert nicht.
                        Wie hast du die Mail verschickt?

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

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

                        Kommentar


                        • #57
                          ist das den ein so großer unterschied?
                          Bei mir wird bei beiden das gleiche ausgegeben ausser das deins Optisch anders ist.
                          Array
                          (
                          [0] => Subject: Testbild

                          [1] => Testbild
                          )
                          Die Mail habe ich ganz normal von gmx geschickt.
                          Dort kann man einstellen, ob man nur die E-Mail Adresse mit schickt oder auch den Namen und ich habe E-Mail+Namen und jetzt wird bei mir nur der Name angezeigt.


                          Ich habe nun noch mal wo ich ja den Header fast fertig habe mir das mit Mime angeschaut.
                          Nur jetzt komme ich nicht weiter habe mir schon deinen Beitrag von Seite 3 Angeschaut nur es geht nichts.
                          Also ich schaue nach ob im Header "Content-Type: multipart/mixed" steht.
                          Du hast ja gesagt das ich nach der Mime Version suchen soll. Aber bei einer normalen Mail ohne anhang steht im Header auch Version 1.0
                          Also habe ich jetzt nach Content-Type gesucht wenn diese drin ist fängt mein das Script an, wenn nicht bleibt es bei der normalen ausgabe.
                          PHP-Code:
                              $texta explode ("--"$textb);
                              echo 
                          $texta
                          da kommt nichts $textb ist der Body.

                          Noch einen frage mein Body sieht jetzt ja so aus

                          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 #1
                          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ür Wechsler: DSL-Tarife ab 3,99 EUR/Monat + Startguthaben
                          --========GMXBoundary257941105531975 #2
                          Content-Type: image/x-png; name=\"banner.png\"
                          Content-Transfer-Encoding: base64
                          Content-Disposition: attachment; filename=\"banner.png\"

                          iVBORw0KGgoAAAANSUhEUgAAAbcAAACjCAIAAACGxceFAAAABnRSTlMAfwB
                          Muss ich jetzt ab dem 2ten Boundary anfangen zu endcoden? und alles was da drüber ist kann ich ignorieren?
                          Zuletzt geändert von themonk; 12.01.2005, 16:05.

                          Kommentar


                          • #58
                            Hallo
                            kann mir den jetzt keiner weiterhelfen?
                            Beim selben Problem war ich mit imap auch und konnte es nicht lösen

                            Kommentar


                            • #59
                              http://www.php-resource.de/forum/sho...threadid=49276
                              TBT

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


                              PHP 2 AllPatrizier II Browsergame

                              Kommentar


                              • #60
                                Original geschrieben von themonk
                                ist das den ein so großer unterschied?
                                Bei mir wird bei beiden das gleiche ausgegeben ausser das deins Optisch anders ist.
                                Mit meiner Möglichkeit, kannst du davor aber schreiben, was du willst ^^

                                [QUOTE]Die Mail habe ich ganz normal von gmx geschickt.
                                Dort kann man einstellen, ob man nur die E-Mail Adresse mit schickt oder auch den Namen und ich habe E-Mail+Namen und jetzt wird bei mir nur der Name angezeigt.[QUOTE]
                                Das kann aber nicht sein...steht dem im Mailheader beim From deine Adresse??? Wenn ja, mach mal auf die Ausgabe des Froms htmlentities()

                                Ich habe nun noch mal wo ich ja den Header fast fertig habe mir das mit Mime angeschaut.
                                Nur jetzt komme ich nicht weiter habe mir schon deinen Beitrag von Seite 3 Angeschaut nur es geht nichts.
                                Also ich schaue nach ob im Header "Content-Type: multipart/mixed" steht.
                                Du hast ja gesagt das ich nach der Mime Version suchen soll. Aber bei einer normalen Mail ohne anhang steht im Header auch Version 1.0
                                Also habe ich jetzt nach Content-Type gesucht wenn diese drin ist fängt mein das Script an, wenn nicht bleibt es bei der normalen ausgabe.
                                PHP-Code:
                                    $texta explode ("--"$textb);
                                    echo 
                                $texta
                                da kommt nichts $textb ist der Body.

                                Noch einen frage mein Body sieht jetzt ja so aus


                                Muss ich jetzt ab dem 2ten Boundary anfangen zu endcoden? und alles was da drüber ist kann ich ignorieren?
                                Hat sich das jetzt mit der Klasse von TBT erledigt?

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

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

                                Kommentar

                                Lädt...
                                X