Korrekter E-Mail Header?

Das ist derzeit meine mailto.php

PHP:
$answer = "Keine Daten zum Verschicken";

if (isset($_POST["msg_message"])) {
	$msg  = "Name: ".urldecode($_POST["msg_lastname"])."\n";
	$msg .= "Alter: ".urldecode($_POST["msg_alter"])."\n";
	$msg .= "Telefon: ".urldecode($_POST["msg_tel"])."\n";
	$msg .= "Servername: ".urldecode($_POST["msg_svname"])."\n";
	$msg .= "AdminNick: ".urldecode($_POST["msg_adminnick"])."\n";
	$msg .= "Slots: ".urldecode($_POST["msg_slots"])."\n";
	$msg .= "Homepage: ".urldecode($_POST["msg_homepage"])."\n";
	$msg .= "Nutzungsbedingungen gelesen: ".urldecode($_POST["msg_nzbread"])."\n";
	$msg .= "Nutzungsbedingungen bestätigt: ".urldecode($_POST["msg_nzbok"])."\n";
	$msg .= "e-Mail: ".urldecode($_POST["msg_mail"])."\n\n";
	$msg .= "Nachricht: ".urldecode($_POST["msg_message"]);
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "Content-Transfer-encoding: 8bit\r\n";
$headers .= "From: ".urldecode($_POST["msg_mail"])."\n";
$headers .= "Reply-To: ".urldecode($_POST["msg_mail"])."\n\n";	
	
	if (mail("name@domain.net", "Bestellformular", $msg, $headers) == true) {
	    echo("success=true&");
	}
	$answer = "Ihre Nachricht wurde verschickt";
}

echo("answer=".urlencode($answer));
$ip

Ich find da keinen doppelten Linebreak... :(
 
Dein Mailprogramm scheint das anders zu sehen.
Jetzt komm schon, anhand der Ausgabe ist es doch nicht so schwer, festzustellen, dass genau die Zeilen, die Du mit \r\n beendest, eine Leerzeile produzieren, während die Zeilen, die Du nur mit \n beendest, dies nicht tun.

LG
 
PHP:
$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-encoding: 8bit\n";
$headers .= "From: ".urldecode($_POST["msg_mail"])."\n";
$headers .= "Reply-To: ".urldecode($_POST["msg_mail"])."\n";

Wenn ich das nun richtig verstanden habe, ist es so richtig...?
Jetzt macher er mir die eMail als Bandwurm...
Also alles was als Text mit linebreak stand ist nun nacheinander geschrieben...
 
Zuletzt bearbeitet:
danke für den tipp, dacht ich mir auch, aber es war nicht der fehler... so funktioniert nun alles... (auch Umlaute ;) )

PHP:
$answer = "Keine Daten zum Verschicken";

if (isset($_POST["msg_message"])) {
	$msg  = "Name: ".urldecode($_POST["msg_lastname"])."<br>";
	$msg .= "Alter: ".urldecode($_POST["msg_alter"])."<br>";
	$msg .= "Telefon: ".urldecode($_POST["msg_tel"])."<br>";
	$msg .= "Servername: ".urldecode($_POST["msg_svname"])."<br>";
	$msg .= "AdminNick: ".urldecode($_POST["msg_adminnick"])."<br>";
	$msg .= "Slots: ".urldecode($_POST["msg_slots"])."<br>";
	$msg .= "Homepage: ".urldecode($_POST["msg_homepage"])."<br>";
	$msg .= "Nutzungsbedingungen gelesen: ".urldecode($_POST["msg_nzbread"])."<br>";
	$msg .= "Nutzungsbedingungen bestaetigt: ".urldecode($_POST["msg_nzbok"])."<br>";
	$msg .= "e-Mail: ".urldecode($_POST["msg_mail"])."<br>";
	$msg .= "Nachricht: ".urldecode($_POST["msg_message"]);
$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-encoding: 8bit\n";
$headers .= "From: ".urldecode($_POST["msg_mail"])."\n";
$headers .= "Reply-To: ".urldecode($_POST["msg_mail"])."\r\n";	
	
	if (mail("name@domain.net", "Bestellformular", $msg, $headers) == true) {
	    echo("success=true&");
	}
	$answer = "Ihre Nachricht wurde verschickt";
}

echo("answer=".urlencode($answer));
$ip


Endlich gehts ;) *freu

Ich hab statt den \n oben bei den einzelnen nachrichtenteilen einfach ein <br> gesetzt... nun stimmt auch die ausgabe der restlichen email...

VIELMALS DANKE
 
Zuletzt bearbeitet:
PHP:
$headers .= "Content-Transfer-encoding: 8bit\r\n";
$headers .= "From: ".urldecode($_POST["msg_mail"])."\n";
Du solltest Dich mal entscheiden ob Du einen Unix-Linebreak (\n) oder einen Windows-Linebreak (\r\n) nutzen willst und es dies nicht mischen.

Ich persoenlich nutzen den Windows-Linebreak. Warum weiss ich nicht mehr, aber es hat bei mir damit soweit keine Probleme gegeben.

danke für den tipp, dacht ich mir auch, aber es war nicht der fehler... so funktioniert nun alles... (auch Umlaute ;) )

...

Ich hab statt den \n oben bei den einzelnen nachrichtenteilen einfach ein <br> gesetzt... nun stimmt auch die ausgabe der restlichen email...
Grund dafuer ist dass Du die Mail im Header als HTML-Mail ausgezeichnet hast, entsprechend musst Du natuerlich auch <br> nutzen um einen Linebreak im Text zu haben.

Uebrigens, es gibt Gruende fuer doppelte Linebreaks in Headern. Das hat dann aber mit MultiPart-Mails zu tun, also Mails die z.B. sowohl einen Text- als auch HTML-Body haben oder Mails mit Anhaengen.
 
Zurück