mail message aus datei

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

  • mail message aus datei

    hallo zusammen,
    ich würde gerne den nachrichtentext, der mit der funktion mail() verschickt wird, aus einer php-datei holen. die nachricht ist eine bestätigungsmail eines shops, die je nach artikelanzahl recht lang werden kann.
    das alles in eine variable zu schreiben und die dann mail() zu übergeben finde ich recht mühselig. ideal wäre etwas ahnliches wie include().
    kann das theoretisch überhaupt gehen, dass php eine datei parst und das html-ergebnis an mail() als text übergibt?
    vielen dank im voraus!!

  • #2
    Also wenn du in der zu inkludierenden Datei folgendes schreibst
    PHP-Code:
    $string 'Vielen Dank für Ihre Bestellung. Wir kassieren die Kohle und verduften auf die Caymans ;-)';

    //dann kannst du in der anderen Datei einfach
    echo $string;
    //machen d.h. du kannst auf die Var zugreifen. 
    Gruss

    tobi
    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


    • #3
      hi tobi,

      vielen dank für deine schnelle antwort!
      ich meinte etwas anderes: ich möchte den inhalt einer datei von php parsen lassen und das ergebnis als messagetext verschicken. das möchte ich ohne das einlesen eines textstrings machen.

      Kommentar


      • #4
        PHP-Code:

        function mail_text_generieren(){
          
        $pfad "Dein Pfad zur datei";
          
        $file file($pfad);
          foreach (
        $file as $line){
            
        $text =$text.$line
          
        }
        return 
        $text;

        dann irgendwo $text = mail_text_generieren aufrufen und den text an mail() übergeben.

        Kommentar


        • #5
          Wenn ich dich richtige verstehe, möchtest du die Ausgabe eines PHP-Scripts an die mail-Funktion übergeben.

          PHP-Code:
          $mess file_get_contents('http://example.com/script.php');
          mail($to$subj$mess); 

          Kommentar


          • #6
            ich meinte etwas anderes: ich möchte den inhalt einer datei von php parsen lassen und das ergebnis als messagetext verschicken. das möchte ich ohne das einlesen eines textstrings machen
            Dann musst du einfach alle echos dieses Files buffern oder auf Variabeln speichern, dann übergibst du diese an mail().
            Ohne eine Output Variable oder den OutputBuffer wird das aber nicht funzen.

            Gruss

            tobi

            p.s. das kann nur funzen wenn die Datei php und/oder HTML/JS/CSS enthält nur solche Dateien kannst du parsen
            Ein nur Text File wird beim parsen einen Fehler werfen.
            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


            • #7
              Wenn ich dich richtige verstehe, möchtest du die Ausgabe eines PHP-Scripts an die mail-Funktion übergeben.
              Diese Version funzt aber nur wenn URL Wrapper auf on stehen.

              Gruss

              tobi
              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


              • #8
                hi tobi,
                das mit dem buffern klingt, als wenn es klappen könnte. kannst du mir eine konkrete funktion sagen, mit der ich arbeiten kann?

                ein simples beispiel für die zieldatei als "ziel.php" wäre:

                <html>
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                <title>Unbenanntes Dokument</title>
                </head>

                <body>
                <?php
                $var = 'Dieser Text muss erscheinen.';
                echo $var;
                ?>
                </body>
                </html>


                @ueps und onemorenerd: file() und file_get_contents() scheinen einfach nur die datei wie sie ist zu lesen. php code in der zieldatei wird dabei nicht ausgeführt.

                Kommentar


                • #9
                  Original geschrieben von mael15
                  @ueps und onemorenerd: file() und file_get_contents() scheinen einfach nur die datei wie sie ist zu lesen. php code in der zieldatei wird dabei nicht ausgeführt.
                  Da liegts du falsch, zumindest was mein Beispiel betrifft. Probiers einfach mal aus ... das http://... könnte das Wunder sein, nachdem du suchst.

                  Kommentar


                  • #10
                    jaaaaa, du hast recht! er funktioniert, aber nur mit absoluter url.
                    alle probleme innerhalb von 20min gelöst, super forum!!!
                    danke an alle, die geantwortet haben!

                    Kommentar


                    • #11
                      hmmmm,
                      leider schleicht sich da noch ein kleines problem ein:
                      in der zieldatei greife ich auf eine session zu, die aber von file_get_contents() scheinbar nicht berücksichtigt wird.
                      hat jemand eine idee?

                      die zieldatei beginnt mit

                      <?php
                      session_start();
                      $ord = $_SESSION['order'];
                      ?>

                      und wird von einer seite aus aufgerufen, die das objekt 'order' berits mit daten gefüllt hat. trotzdem kann die session nicht gelesen werden.
                      schwierig, schwierig.....

                      Kommentar


                      • #12
                        Nun es ist so, wenn du file_get_contents() auf eine URL losläßt, dann generiert der PHP-Interpreter einen GET-Request nach eben dieser URL, sendet ihn und verwertet das Ergebnis (die Webseite) als käme sie aus einer lokalen Datei.
                        Bei dem GET-Request wird aber nicht automatisch deine Session-ID mitgeschickt. Somit kann session_start() deine Session nicht laden und fortführen sondern startet stattdessen eine neue. In der neuen gibt es deine Order nicht. Pech.

                        Glück, wenn man sich zu helfen weiß:
                        PHP-Code:
                        file_get_contents('http://example.com/script.php?'.SID); 
                        Die Konstante SID enthält den Namen und die ID der aktuellen Session in der Form name=id. Wenn du sie an die URL anhängst, kann session_start() die Session aufnehmen. Wunder Nummer 2.

                        Kommentar


                        • #13
                          hi onemorenerd,
                          das klingt sehr gut, aber so ganz will sich das wunder noch nicht einstellen. in der dokumentation steht nämlich folgender hinweis:

                          Anmerkung: Bei nichtrelativen URLs wird davon ausgegangen, dass sie auf externe Seiten zeigen und deshalb keine SID angehängt, weil es ein Sicherheitsrisiko wäre, die SID an einen anderen Server zu übermitteln.

                          entsprechend funzt es noch nicht.

                          ich habe es auch mal mit session_id() versucht, aber folgende anmerkung könnte der grund sein, warum auch das nicht funzt:

                          Anmerkung: Falls Session-Cookies verwendet werden und für session_id() eine ID angegeben wird, wird ungeachtet dessen, ob die aktuelle Session-ID mit der neuen identisch ist, bei jedem Aufruf von session_start() ein neues Cookie gesendet.

                          hast du vielleicht noch ein drittes wunder parat?

                          Kommentar


                          • #14
                            Original geschrieben von mael15
                            Anmerkung: Bei nichtrelativen URLs wird davon ausgegangen, dass sie auf externe Seiten zeigen und deshalb keine SID angehängt, weil es ein Sicherheitsrisiko wäre, die SID an einen anderen Server zu übermitteln.
                            Du hängst die SID doch selber an! Außerdem ist dies ein Auszug aus der Doku zu Sessions, der hierzu gar nicht paßt.
                            Hast du meinen letzten Vorschlag mal probiert? Was kam in dem aufgerufenen Script an (print_r($_GET)?

                            Kommentar


                            • #15
                              hi,

                              deinen vorschlag habe ich probiert. wie in der zweiten anmerkung beschrieben wird in der zieldatei eine neue session generiert, egal, ob man die session id per hand anhängt oder über .SID anhängt. die id kommt also an, man kann aber keine session daraus erzeugen.

                              problem 1) es werden session cookies verwendet, deshalb kann man die session nicht mir session_id() übernehmen.

                              problem 2) wie du schon beschrieben hattest, muss file_gets_content() eine absolute url benutzen, weshalb mittels .SID die id nicht übertragen wird. selbst wenn, es würde wegen problem 1 wohl nichts bringen.

                              also egal was man tut, durch die verwendung von session cookies kann man die session nicht durch übermittlung der session id übernehmen. soweit ich das verstanden habe, ist das aus sicherheitsgründen auch absicht.
                              doch leider würde ich genau das gerne tun. weißt du, ob man vielleicht temporär die verwendung von sessioncookies ausschalten kann, damit man per session_id() doch die id setzen kann?

                              ich bin schon dabei aufzugeben und die sehr unpraktische lösung zu akzeptieren, dass ich die gesamte zieldatei als string umschreibe und per include() einbinde.

                              ist natürlich sehr frustrierend, funktioniert aber....

                              Kommentar

                              Lädt...
                              X