phpmailer anhang pfadangabe problemchen

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

  • phpmailer anhang pfadangabe problemchen

    Hallo,

    ich möchte via phpmailer einen anhang versenden. das klappt auch wunderbar, wenn ich die datei selbst von meinem pc als upload übergebe. Doch ich möchte jetzt eine Datei direkt vom webspace versenden, was eigentlich auch kein problem ist, z.b. bei einem bild.
    Ich muss nur irgendwie ne variable mitgeben damit die Rechnung.pdf auch die Daten des Kunden drinn hat. die pdf datei wird durch php erstellt (FPDF).
    der relevante code:
    PHP-Code:
    $file"ordner/Rechnung.php?trefferid=$trefferid&rechnr=$rechnr";
    $filename "Rechnung.pdf";
    $mail->AddAttachment($file$filename);
    #so findet er natürlich die datei nicht und hängt nix an 
    PHP-Code:
    $file"ordner/Rechnung.php";
    $filename "Rechnung.pdf";
    $mail->AddAttachment($file$filename);
    #so findet er die datei und versendet sie auch als anhang, problem ist nur, 
    #dass keine variablen dabei sind und somit die pdf-datei nicht geöffnet 
    #werden kann 
    wie bekomme ich nun die variablen reingeschrieben bzw. die rechnung.php so verändert, dass die rechnung.pdf als anhang geöffnet und gelesen werden kann? Ich möchte auch nicht unbedingt noch eine datei generieren und auf space zwischenspeichern, WENN das denn geht. Ich hoffe ihr versteht wie ich es meine und könnt mir helfen.
    selfmade-webdesign
    webdesign leipzig

  • #2
    du sollst für interne zwecke kein http bemühen.

    besser: schreibe einen wrapper, der rechnung.php inkludiert, die nötigen parameter an die klasse(?) weitergibt und das ergebnis zwischenspeichert.

    Kommentar


    • #3
      ja da hast du recht, dass http da nichts nützt, weil er ja die datei nicht findet mit den variablen hinten dran

      was für einen wrapper sollten man da nehmen? meinst du so etwas in der art? Wrapper ich denke mal schon oder?
      selfmade-webdesign
      webdesign leipzig

      Kommentar


      • #4
        nein, "wrapper" im sinne einer hilfsklasse/-methode/-datei.

        Kommentar


        • #5
          leider hab ich da gar keinen ansatz wie ich das bewerkstelligen könnte
          hmmmmmm
          selfmade-webdesign
          webdesign leipzig

          Kommentar


          • #6
            Original geschrieben von brauni54
            leider hab ich da gar keinen ansatz wie ich das bewerkstelligen könnte
            die http-get-parameter kannst du per php auch direkt in's $_GET-array schreiben.

            jetzt ist die frage, was "Rechnung.php" überhaupt macht. wenn eine temporäre datei angelegt wird, kannst du diese benutzen, ansonsten könntest du die ausgabe in eine temporäre datei umleiten.

            Kommentar


            • #7
              rechnung.php ist die datei mit der das eigentliche pdf-dokument erstellt wird (siehe fpdf) und am browser ausgegeben wird - als pdf-datei...
              nur geht das als anhang beim phpmailer nicht, welchen ich nutze
              du sollst für interne zwecke kein http bemühen.

              besser: schreibe einen wrapper, der rechnung.php inkludiert, die nötigen
              parameter an die klasse(?) weitergibt und das ergebnis zwischenspeichert.

              @ penizillin
              nun möchte ich das gern mit diesem wrapper versuchen, nur sind wrapper noch neuland für mich und ich finde keine passenden ansätze wie ich einen eigenen wrapper erstelle ....*weitersuch*
              selfmade-webdesign
              webdesign leipzig

              Kommentar


              • #8
                angenommen, rechnung.php sieht so aus:
                PHP-Code:
                ...
                header("content-type: application/pdf");
                echo 
                $irgendwie_ermittelter_pdf_inhalt;
                ... 
                könntest du eine datei wrapper.php anlegen, die folgendermaßen aufgebaut ist:
                PHP-Code:
                 ob_start();
                include 
                'rechnung.php';
                fwrite(...); # aus ob_get_contents() in eine temporäre datei schreiben.
                ...
                # versende temporäre datei
                # lösche temporäre datei 
                musst nur überlegen, wie man die parameter am geeignetsten durchreicht.

                Kommentar


                • #9
                  hey danke für deinen ansatz, ich werd mich dann mal dran machen und gucken was geht
                  ich sag bescheid, wie es gelaufen ist, auch im erfolgsfall
                  danke @penizillin
                  selfmade-webdesign
                  webdesign leipzig

                  Kommentar


                  • #10
                    ich habe nun folgenden wrapper erstellt - testweise
                    PHP-Code:
                    ob_start();
                    include 
                    'pdfrechnung/Rechnung.php';
                    $data ob_get_contents();
                    $neuedatei"pdfrechnung/temp.php";
                    $fp fopen($neuedatei'a+');
                    fwrite($fp$data); # aus ob_get_contents() in eine temporäre datei schreiben.
                    fclose($fp);
                    ob_end_clean(); 
                    und bekomme folgenden fehler:
                    Warning: %v%v() [function.%v]: Unable to access /bla/bla/bla/bla/html/logo1.PNG in /bla/bla/bla/bla/bla/bla/pdfrechnung/fpdf.php on line 1490
                    da haut sicher was bei ob_get_contents nicht hin!?
                    PHP-Code:
                    $f=fopen($file,'rb'); # ist zeile 1490 in fpdf.php
                    #$file = logo1.PNG 
                    rechte habe ich auch überprüft und es liegt nicht an denen
                    wenn ich die rechnungen so anschau - im browser - dann funktioniert es ja auch einwandfrei
                    ich habe das logo auch so versucht anzusprechen -> $_SERVER['DOCUMENT_ROOT'].'/logo1.PNG' und so logo1.PNG'
                    was könnte denn noch eine ursache für diesen fehler sein?
                    selfmade-webdesign
                    webdesign leipzig

                    Kommentar


                    • #11
                      beim generieren von pdf wird wohl ein falscher pfad zu der png-datei angegeben.

                      Kommentar


                      • #12
                        das wird es wohl sein, das kann ich aber noch suchen
                        zmindest war deine idee mit dem wrapper ein voller erfolg
                        mein wrapper:
                        PHP-Code:
                        ob_start();
                        include 
                        "pdfrechnung/Rechnung.php";
                        $data ob_get_contents();
                        $neuedatei"pdfrechnung/temp.php";
                        $fp fopen($neuedatei'w');
                        fwrite($fp$data); // ob_get_contents() in temp.php schreiben.
                        fclose($fp);
                        ob_end_clean();
                        // löschen muss ich ja die temp.php datei nicht, sondern ich überschreib sie jedesmal 
                        hier hier mein ausschnitt zum versenden
                        PHP-Code:
                        //Attachment anhängen
                        include "wrapper.php";
                        $file=  "pdfrechnung/temp.php";
                        $filename "Fresh-Webspace_Rechnung.pdf";
                        $mail->AddAttachment($file$filename); 
                        und fertig

                        danke dir nochmal @penizillin
                        selfmade-webdesign
                        webdesign leipzig

                        Kommentar


                        • #13
                          achja die pfadangabe muss in die tiefen meines space gehen.
                          also nicht nur /html/meineordner sondern /srv/www/kkk/blablub/html.......
                          somit is alles fertig
                          selfmade-webdesign
                          webdesign leipzig

                          Kommentar


                          • #14
                            neues problem

                            hallo, ich muss diesen thread eben mal wieder aufwärmen
                            folgendes problem:

                            ich möchte, im falle eines falles, eine email mit zwei generierten pdfs versenden.
                            meinen wrapper habe ich so umgebaut:
                            PHP-Code:
                            <?
                            if(preg_match("/Mahnung/i",$betreff))
                            {
                            ob_start();
                            include_once "pdfrechnung/Mahnschreiben.php";
                            $data2 = ob_get_contents();
                            $neuedatei2= "pdfrechnung/temp2.php";
                            $fp2 = fopen($neuedatei2, 'w');
                            fwrite($fp2, $data2); // inhalt von ob_get_contents() in eine temporäre datei schreiben.
                            fclose($fp2);
                            ob_end_clean();

                            ob_start();
                            include_once "pdfrechnung/Rechnung.php";
                            $data = ob_get_contents();
                            $neuedatei= "pdfrechnung/temp.php";
                            $fp = fopen($neuedatei, 'w');
                            fwrite($fp, $data); // inhalt von ob_get_contents() in eine temporäre datei schreiben.
                            fclose($fp);
                            ob_end_clean();
                            }
                            else
                            {
                            ob_start();
                            include_once "pdfrechnung/Rechnung.php";
                            $data = ob_get_contents();
                            $neuedatei= "pdfrechnung/temp.php";
                            $fp = fopen($neuedatei, 'w');
                            fwrite($fp, $data); # aus ob_get_contents() in eine temporäre datei schreiben.
                            fclose($fp);
                            ob_end_clean();
                            }
                            ?>
                            leider geht das nicht einfach so, da im falle einer mahnung, der wrapper nicht mit dem zweiten file zurecht kommt.
                            fehlermeldung ist folgende:
                            Fatal error: Cannot redeclare class pdf in ....

                            ich denke, dass es an dem zweitem aufruf von ob_start() liegt. scheinbar sind immernoch die daten vom ersten ob_get_contens() vorhanden oder täusche ich mich da?
                            vielleicht hat ja jemand einen tip, wie sich die zwei files nicht in die haare kriegen
                            selfmade-webdesign
                            webdesign leipzig

                            Kommentar


                            • #15
                              Fatal error: Cannot redeclare class pdf in ....
                              ist doch sehr eindeutig ? Oder etwa nicht ?
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X