Gerade eben erzeugtes PDF als Email Attachment anhängen...

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

  • Gerade eben erzeugtes PDF als Email Attachment anhängen...

    Hallo Community,

    nach nun längerer Suche wollte ich es doch wagen, Eure Konsultation bezüglich eines kleinen Probems einzuholen.

    Szenario: Ich habe gerade ein PDF Dokument erzeugt (es ist noch in einer Variablen mit Namen $pdf gespeichert...) , es jedoch nicht irgendwo abgespeichert, sondern möchte es im selben Atemzug als Attachment einer Mail versenden.

    Wenn ich jetzt klassicher Weise das Dokument öffnen wollte mit:

    PHP-Code:
    $file fopen($fileatt,'rb'); 
    dann geht das so leider nicht, da es ja nicht persistent gespeichert wurde, sondern nur als Variable ($pdf) vorliegt.

    Jetzt die eigentliche Frage:

    Wie kann ich den Vorgang
    PHP-Code:
    $data fread($file,filesize($pdf)); 
    anpassen, damit ich dann später das Dokument mit Hilfe von

    PHP-Code:
    $data chunk_split(base64_encode($data)); 
    zerlegen kann..? Kann mir jemand den entscheidenen Tip geben, wie man dabei vorgeht, um ein gültiges Attachment an die Mail zu hängen..?!

    Vielen Dank im Vorraus und Grüße aus München.

    Christian

  • #2
    Re: Gerade eben erzeugtes PDF als Email Attachment anhängen...

    Wie kann ich den Vorgang
    PHP-Code:
    $data fread($file,filesize($pdf)); 
    anpassen, damit ich dann später das Dokument mit Hilfe von
    PHP-Code:
    $data chunk_split(base64_encode($data)); 
    zerlegen kann..?
    Was machst du denn da?
    Du liest den kompletten Inhalt der Datei in die Variable $data ein, um auf diese dann base64_encode und chuck_split anzuwenden.

    Nun sagst du, dass du den Inhalt des PDFs bereits in $pdf vorliegen hast - also wo bitte ist jetzt eigentlich dein Problem ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      .. habe gerade ein echtes Verständnisproblem - einen riesen Knoten...

      OK, wenn ich also versuche die in $pdf gespeicherte PDF Datei anzuhängen, dann muss ich sie doch zerlegen, oder? Verzeicht mein Hlbwissen, aber mit Mailattachments habe ich kaum Erfahrung und nutze nur ein modifiziertes Skript.

      Vielleicht verdeutlicht das mein Problem:

      PHP-Code:
      $fileatt=$pdf;

      $file fopen($fileatt,'rb'); 
      $data fread($file,filesize($fileatt)); 
      fclose($file); 

      $semi_rand md5(time()); 
      $mime_boundary "==Multipart_Boundary_x{$semi_rand}x"

      $headers .= "\nMIME-Version: 1.0\n" 
                  
      "Content-Type: multipart/mixed;\n" 
                  
      " boundary=\"{$mime_boundary}\""

      $email_message "This is a multi-part message in MIME format.\n\n" 
                      
      "--{$mime_boundary}\n" 
                      
      "Content-Type:text/html; charset=\"iso-8859-1\"\n" 
                     
      "Content-Transfer-Encoding: 7bit\n\n" 
      $email_message "\n\n"

      $data chunk_split(base64_encode($pdf)); 
      Ich kann kein
      PHP-Code:
      $file fopen($fileatt,'rb'); 
      $data fread($file,filesize($fileatt)); 
      fclose($file); 
      machen, da ich keine Dati zum öffnen habe oder??

      HIIIILLLFFEEEEEE!!!

      Kommentar


      • #4
        Original geschrieben von Zefixhall
        OK, wenn ich also versuche die in $pdf gespeicherte PDF Datei anzuhängen, dann muss ich sie doch zerlegen, oder?
        Ja - und warum tust du's nicht?


        Es gibt derzeit zwei relevante Schritte - einmal das Einlesen des Dateiinhaltes in eine Variable, und zum zweiten das Zerlegen dieses Variableninhaltes in Mail-gerechte Form.

        Wenn du den Dateiinhalt schon in einer Variablen hast - dann kannst du dir also den ersten Schritt sparen, und brauchst mit dieser Variablen nur noch den zweiten ausführen.


        Wer wirklich so wenig logisches Verständnis hat, sollte vom Programmieren aber lieber die Finger lassen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          ... wollte mir eigentlich helfen und nicht beleidigen lassen...

          Vielleicht bist Du doch so nett und kannst mir nen Tipp geben, damit das funktioniert. Wenn also das PDF schon in der Variable gespeichert ist, dann muss ich sie nur noch zerlegen - aber wie?? Mein Ansatz geht nicht...

          PHP-Code:
          $data chunk_split(base64_encode($pdf)); 
          Muss ich denn die Funtion base64_encode() nicht aufrufen oder wie muss das aussehen.

          Danke für Deine Hilfe.

          Kommentar


          • #6
            Diese Fehlermeldung bekomme ich zu dieser Zeile :


            Warning: filesize(): Stat failed for Resource id #22 (errno=2 - No such file or directory) in /home/www/web568/html/xtras/Admin/oas/mod/bestellungen/mail_rechnung_PDF.php on line 126

            PHP-Code:
            $data fread($pdf,filesize($pdf)); 
            Kann ch mir den fread sparen, so muss ich doch zumindest die Zeile

            PHP-Code:
            $data chunk_split(base64_encode($data)); 
            irgendwie verarzten.
            Freue mich auf den entscheidenden Hinweis.

            Danke.

            Kommentar


            • #7
              Original geschrieben von Zefixhall
              Diese Fehlermeldung bekomme ich zu dieser Zeile :
              Natürlich bekommst du die - wenn es gar keine Datei gibt, kannst du doch wohl offensichtlich weder deren Größe ermitteln noch deren Inhalt auslesen.

              Dass die Meldung jedoch besagt
              Warning: filesize(): Stat failed for Resource id #22
              lässt allerdings vermuten, dass du in $pdf eben doch nicht den Inhalt des PDF stehen hast, sondern lediglich eine Ressource ID.
              Dann musst du natürlich zuerst mal sehen, wie du über diese an die PDF-Daten herankommst.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Dann musst du natürlich zuerst mal sehen, wie du über diese an die PDF-Daten herankommst. [/B]
                ... wie soll ich denn das machen???

                Kommentar


                • #9
                  Original geschrieben von Zefixhall
                  ... wie soll ich denn das machen???
                  Woher soll ich das wissen?
                  Du hast uns ja bisher nicht mal mitgeteilt, wie du überhaupt das PDF erzeugst ...
                  Wenn du dafür eine fertige Klasse o.ä. benutzt, wird diese ja sicherlich auch eine Methode bereitstellen, an die Daten zu gelangen ...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Nun, das PDF ist von keiner Vorlage und stammt aus meiner Feder. Es beginnt so:

                    PHP-Code:
                    $pdf pdf_new();
                    ....
                    # dann der Inhalt mit ziemlich viel Zeug ;-)

                    pdf_end_page($pdf);
                    pdf_close($pdf); 
                    ... fehl da vielleicht:
                    PHP-Code:
                    $pdf pdf_get_buffer($pdf); 
                    ???

                    Kommentar


                    • #11
                      ... hätte ich es nich schiessen sollen?!

                      PHP-Code:
                      pdf_close($pdf); 

                      Kommentar


                      • #12
                        Original geschrieben von Zefixhall
                        ... fehl da vielleicht: $pdf = pdf_get_buffer($pdf); ???
                        Ja, wäre vielleicht ganz angebracht, wenn du dir die Daten, die du verwenden willst, erst mal besorgst ...
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          OK, habe ich...

                          Es sieht nun wie folgt aus...

                          PHP-Code:
                          $pdf pdf_get_buffer($pdf);
                          $data chunk_split(base64_encode($data)); 
                          ist das so richtig, denn wie ich jetzt meine verstanden zu haben brauche ich das
                          PHP-Code:
                          $data fread($pdf,filesize($pdf)); 
                          nicht mehr oder???

                          Geht so aber immer noch nicht...

                          Kommentar


                          • #14
                            Es geht !!!!!

                            Habe die ganze Zeit nicht meinen Fehler bemerkt:
                            PHP-Code:
                            $pdf pdf_get_buffer($pdf);
                            $data chunk_split(base64_encode($data)); 
                            dabei muss es einfach nur
                            PHP-Code:
                            $pdf pdf_get_buffer($pdf);
                            $data chunk_split(base64_encode([B]$pdf[/B])); 
                            lauten...

                            Boah, stand ich auf der Leitung!!!!

                            Nichts für ungut und noch einmal vielen Dank für Deine Hilfe!!!!

                            Kommentar

                            Lädt...
                            X