Christoph: Email Ausrichtung

Hallo Forum,

ich habe wieder ein Problem: Ich lasse durch ein Kontaktformular mir Daten schicken, soweit sogut. Und diese Daten lass ich mit der mail() Funktion mir zuschicken. Alles geht. Habe jetzt mittlerweile auch viele Abfragen vorher eingebaut zur Überprüfung usw...

Nun hatte ich vorher immer die Mail ausrichten lassen (mir viel kein anderes Wort ein) mit \n und \r Also Zeilenumbruch und Tabulator setzten. Das ging ja alles vorher, wo die Superglobals noch net waren. Jedoch jetzt gehts net mehr. Hier ein Auszug aus meinem Code:
$mail = "christoph@gahmann.com";
$headers  ='From: '.$_POST['vorname'].' '.$_POST['nachname'].' <'.$_POST['email'].'>\r\n';
$message .='Vorname: '.$_POST['vorname'].'\n';
$message .='Nachname: '.$_POST['nachname'].'\n\n';
$message .='Email: '.$_POST['email'].'\n';
$message .='Homepage: '.$_POST['homepage'].'\n';
$message .='Nachricht: '.$_POST['nachricht'].'\n\n';
$message .= "----------------------------------------\n";
@$send=mail($mail,"Kontaktaufnahme",$message,$headers);

Ankommen tuts dann ungefähr so: Vorname: Christoph\nNachname: Gahmann\n\nEmail: cg@ghostnet.de\nHomepage: usw...

was mach ich nun wieder falsch?

LG Christoph!

  1. Hallo,

    Ankommen tuts dann ungefähr so: Vorname: Christoph\nNachname: Gahmann\n\nEmail: cg@ghostnet.de\nHomepage: usw...

    \n zwischen einfachen Anführungszeichen ' werden (genauso wie
    Variablen) nicht geparst. Wenn du stattdessen " verwendest,
    sollte es gehen.

    Gruß,
    dimde

    P.S. Ich wüsste gern, wieso das so ist und wie man das "umgehen" kann.
    Um den Vorteil der ' (schneller, " müssen nicht escaped werden) zu
    nutzen und trotzdem schönen Sourcecode auszugeben, müsste man ja
    ständig sowas schreiben 'irgendein langer (Quell)Text'."\n";

    1. Hallo Dimde

      Richtige Erklärung.

      P.S. Ich wüsste gern, wieso das so ist und wie man das "umgehen" kann.
      Um den Vorteil der ' (schneller, " müssen nicht escaped werden) zu
      nutzen und trotzdem schönen Sourcecode auszugeben, müsste man ja
      ständig sowas schreiben 'irgendein langer (Quell)Text'."\n";

      Verwende ein heredoc (ab PHP 4)
      http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc

      Ich zitiere (etwas frei) aus Programming PHP von Rasmus Lerdorf & Kevin Tatroe:

      <cite>
      Quoting String Constants

      There are three ways to write a literal string in your program:
        using single quotes,
        double quotes,
        and the here document (heredoc) ...
      These methods differ in whether they recognize special escape sequences that
      let you encode other characters or interpolate variables.

      The general rule is to use the least powerful quoting mechanism necessary.
      </cite>

      Gruss,

      Vinzenz

    2. Hallo,

      Hallo

      Ankommen tuts dann ungefähr so: Vorname: Christoph\nNachname: Gahmann\n\nEmail: cg@ghostnet.de\nHomepage: usw...

      \n zwischen einfachen Anführungszeichen ' werden (genauso wie
      Variablen) nicht geparst. Wenn du stattdessen " verwendest,
      sollte es gehen.

      Danke ich habs alles umgeschrieben und nur " genommen, nun gehts auch!

      Gruß,
      dimde´

      P.S. Ich wüsste gern, wieso das so ist und wie man das "umgehen" kann.
      Um den Vorteil der ' (schneller, " müssen nicht escaped werden) zu
      nutzen und trotzdem schönen Sourcecode auszugeben, müsste man ja
      ständig sowas schreiben 'irgendein langer (Quell)Text'."\n";

      Lies mal hierzu: http://www.dclp-faq.de/q/q-stil-anfuehrungszeichen.html

      Gruß Christoph

  2. Hi!

    Ich programmiere zwar ausschlieslich in Perl, dort ist es jedoch so, das Zeichen wie \r und \n in _doppelte_ Anführungszeichen gesetzt werden müssen. In einfachen Anführungsstrichen werden sie nicht als Steuerzeichen sondern als Strings behandelt.

    '\n' -> \n
    "\n" -> <Zeilenumbruch>