andreas Hartmann: Mail-Formular

Hallo,

Ich möchte eine Email wegschicken, was auch einwandfrei funktioniert.
(hab von selfphp den Code...)

leider wird die ausgabe in der email ziemlich unübersichtlich, da alles einfach untereinander geschrieben wird. Ich möchte ab und zu mal einen doppelten absatz einbauen, weiß aber nicht was für eine abfrage ich schreiben soll.....

in der email steht z.B.
Name1:  Bla bla
Vorname1: Bal bla
Name2:  Bla Bla
Vorname2: sdfsd
Name3:  Bla bla
Vorname3: sdfsdf
Name4:  Bla Bla
Vorname4: sdsdfs

jetzt möchte ich immer vor Name einen doppelten absatz...

Hier der Code:

<?php

$delimiter  = $_POST["delimiter"];
$mailto     = $_POST["mailto"];
$returnhtml = $_POST["return"];
$subject    = $_POST["subject"];

$mailtext   = "";

while(list($name,$value) = each($_POST))
{
 if($name != "mailto" && $name != "return" && $name != "subject" && $name != "delimiter")
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
 $mailtext .= $name.$delimiter.$value_array."\n";
   }
  }
  else
  {
  $mailtext .= $name.$delimiter.$value."\n";
  }
 }
}

if(get_magic_quotes_gpc()) $mailtext = stripslashes($mailtext);

mail($mailto,$subject,$mailtext) or die("Die Mail konnte nicht versendet werden.");

//header("Location: $returnhtml");

?>

Ach ja, wie leite ich die seite nach vollenden des abschickens weiter, damit ich dem benutzer signalisieren kann, das die email weggeschickt wurde, da der vorgegebene header...... bei mir einen fehler verursacht....

Vielen dank im vorraus.

Andreas

  1. Hello,

    bau Dir deinen Message-Body entsprechend zusammen.
    Eine Zeilenschaltung in der eMail wird immer durch \n vorgenommen. Vor einem Absatz stenen dann eben zwei \n.

    mail($mailto,$subject,$mailtext) or die("Die Mail konnte nicht versendet werden.");

    //header("Location: $returnhtml");

    Ach ja, wie leite ich die seite nach vollenden des abschickens weiter, damit ich dem benutzer signalisieren kann, das die email weggeschickt wurde, da der vorgegebene header...... bei mir einen fehler verursacht....

    Gibt es denn eine Fehlermeldung, wenn Du den Header sendest?

    Sinnvoller wäre es wahrscheinlich, die Seite einfach per

    readfile($returnhtml);

    ausgeben zu lassen. Es muss sich aber um eine vollständige Seite handeln. Auerdem wird die Seite geparst, wenn es sich um eine php-Seite handelt.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Hello,

      Sinnvoller wäre es wahrscheinlich, die Seite einfach per

      readfile($returnhtml);

      ausgeben zu lassen. Es muss sich aber um eine vollständige Seite handeln. Auerdem wird die Seite geparst, wenn es sich um eine php-Seite handelt.

      Das mit dem Parsen bei readfile() nehme ich nochmal zurück. War mir ganz sicher, dass sich die Funktion neulich so merkwürdig verhalten hat, als ich sie für ein Download-Script benutzt habe. Habe das eben aber nochmal überprüft, und nun tut sich da nichts unerwünschtes. Vielleicht liegts an der PHP-Version (4.3.1)? Die besagte war (4.2.2).

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hello,

        Sinnvoller wäre es wahrscheinlich, die Seite einfach per

        readfile($returnhtml);

        wenn ich das eingebe, funktioniert die weiterleitung aber nicht...

        ich denke mal das ich noch irgend einen wert übergeben muß, weiß es aber nicht, da ich mich mit php nicht auskenne.....

        im formular habe ich jedenfalls den eintrag:
        <input type="hidden" name="return" value="http://www.google.de">

        das würde doch bedeuten, das er mir nach vollendung auf google springen sollte.....

        oder muß ich auf der php-seite noch was verändern....

        gruß andy

        1. Hello,

          Sinnvoller wäre es wahrscheinlich, die Seite einfach per

          readfile($returnhtml);

          wenn ich das eingebe, funktioniert die weiterleitung aber nicht...

          Entweder Umleitung senden, oder direkte HTML-Ausgabe. Beides geht nicht.
          Allerdings kann man die direkte Ausgabe noch NACH dem Location-Header anbringen für den Fall, dass der Browser 301 oder 302 nicht mag.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. Entweder Umleitung senden, oder direkte HTML-Ausgabe. Beides geht nicht.
            Allerdings kann man die direkte Ausgabe noch NACH dem Location-Header anbringen für den Fall, dass der Browser 301 oder 302 nicht mag.

            kannst du mir ein beispiel sagen, mit dem ich einfach nur den auf den Monitor ausgebe, das die email gesendet wurde??

            gruß andreas

            1. hi,

              kannst du mir ein beispiel sagen, mit dem ich einfach nur den auf den Monitor ausgebe, das die email gesendet wurde??

              echo "das die email gesendet wurde?";

              gruss,
              wahsaga

    2. hi,

      Eine Zeilenschaltung in der eMail wird immer durch \n vorgenommen. Vor einem Absatz stenen dann eben zwei \n.

      AFAIK sollte man aus kompabilitätsgründen für die zeilenschaltung in emails immer \r\n verwenden, statt nur \n.

      gruss,
      wahsaga

  2. ok, habe mich wohl ein bißchen unverständlich ausgedrückt....

    Hallo,

    Ich möchte eine Email wegschicken, was auch einwandfrei funktioniert.
    (hab von selfphp den Code...)

    leider wird die ausgabe in der email ziemlich unübersichtlich, da alles einfach untereinander geschrieben wird. Ich möchte ab und zu mal einen doppelten absatz einbauen, weiß aber nicht was für eine abfrage ich schreiben soll.....

    in der email steht z.B.
    Name1:  Bla bla
    Vorname1: Bal bla
    Name2:  Bla Bla
    Vorname2: sdfsd
    Name3:  Bla bla
    Vorname3: sdfsdf
    Name4:  Bla Bla
    Vorname4: sdsdfs

    jetzt möchte ich immer vor Name einen doppelten absatz...

    Hier der Code:

    <?php

    $delimiter  = $_POST["delimiter"];
    $mailto     = $_POST["mailto"];
    $returnhtml = $_POST["return"];
    $subject    = $_POST["subject"];

    $mailtext   = "";

    while(list($name,$value) = each($_POST))
    {
     if($name != "mailto" && $name != "return" && $name != "subject" && $name != "delimiter")
     {
      if(is_array($value))
      {
       foreach($value as $value_array)
       {
     $mailtext .= $name.$delimiter.$value_array."\n";
       }
      }
      else
      {

    wenn ich hier schreibe:
     If($name="Name")
       {
       $mailtext.= "\n"
       }

    dann wird der inhalt von $name durch Name ersetzt... (dabei will ich doch nur überprüfen, was in $name drin steht....
    (habs mal so geschrieben, wie ich es in VB schreiben würde...)

    $mailtext .= $name.$delimiter.$value."\n";
      }
     }
    }

    if(get_magic_quotes_gpc()) $mailtext = stripslashes($mailtext);

    mail($mailto,$subject,$mailtext) or die("Die Mail konnte nicht versendet werden.");

    //header("Location: $returnhtml");

    ?>

    Ach ja, wie leite ich die seite nach vollenden des abschickens weiter, damit ich dem benutzer signalisieren kann, das die email weggeschickt wurde, da der vorgegebene header...... bei mir einen fehler verursacht....

    Vielen dank im vorraus.

    Andreas