Ich verwende die PHP mail () - Funktion:
$to = 'AAAA <[email protected]>';
$subject = 'BBBB';
$message = "CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC";
$headers = 'From: DDD<[email protected]>' . "\r\n";
$headers .= "Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n";
$headers .= "Mime-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable \r\n";
mail($to, $subject, $message, $headers);
Wenn ich diese E-Mail erhalte, sieht das so aus:
CCCC CCCC CCCC CCC CCC CCC CCCC
Ich würde so etwas erwarten:
CCCC
CCCC CCCC CCC
CCC
CCC
CCCC
Es funktioniert auch ohne "Content-type:" - Header. Wie kann ich neue Zeilen erstellen und meine Inhaltsartdeklaration verwenden?
Sie müssen einen <br>
verwenden, da Ihr content-type
text/html
ist.
es funktioniert ohne den content-type
-Header, da Ihre E-Mail dann als Text interpretiert wird. Wenn Sie wirklich \n
verwenden möchten, sollten Sie content-type: text/plain
verwenden.
ähnliche Frage hier
Wenn Sie HTML-E-Mails senden, verwenden Sie <BR> (oder <BR /> ) wie angegeben.
Wenn Sie eine Nur-Text-E-Mail senden, verwenden Sie% 0D% 0A
\r =% 0D (Strg + M = Wagenrücklauf)
\n =% 0A (Strg + A = Zeilenvorschub)
Wenn Sie einen E-Mail-Link in Ihrer E-Mail haben,
Z.B
<A HREF="mailto?To=...&Body=Line 1%250D%250ALine 2">Send email</A>
Verwenden Sie dann% 250D% 250A
% 25 =%
Sie müssen <br>
anstelle von \r\n
verwenden. Dafür können Sie den eingebauten Funktionsaufruf nl2br .__ verwenden. Ihr Code sollte also so sein
$message = nl2br("CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC");
Wenn Sie content-type: text/html
verwenden, müssen Sie einen <br>
eingeben, da Ihre Nachricht wie eine html-Datei bedroht wird.
Wenn Sie jedoch content-type
anstelle von text/plain
in text/html
ändern, können Sie \r\n
-Zeichen verwenden.
Die Verwendung von <BR>
ist nicht immer ausreichend. MS Outlook 2007 ignoriert dies, wenn Sie Outlook nicht mitteilen, dass es sich um ein selbstschließendes HTML-Tag handelt
<BR />
Mit dem Zeichencode % 0A können Sie ein neues Zeilenzeichen im Text/Plain-Inhaltstyp hinzufügen.
Zum Beispiel:
<a href="mailto:[email protected]?subject=Hello%20again&body=HI%20%0AThis%20is%20a%20new%20line"/>
Hier ist die jsfiddle
verwenden Sie für Text-/Nur-Text-Mail in einer Mail-Funktion auf jeden Fall die PHP_EOL-Konstante, mit der Sie sie kombinieren können
auch für Text/HTML-Text:
$messagePLAINTEXT="This is my message."
. PHP_EOL .
"This is a new line in plain text";
$messageHTML="This is my message."
. PHP_EOL . "<br/>" .
"This is a new line in html text, check line break in code view";
$messageHTML="This is my message."
. "<br/>" .
"This is a new line in html text, no line break in code view";
Eine andere Sache benutzt "", es gibt einen Unterschied zwischen "\ r\n" und '\ r\n'.
' '
in meinem Fall fehlte Platz, als ' \r\n'
ein Leerzeichen hinzugefügt wurde
"\ n\r" erzeugt 2 neue Zeilen, während "\ n", "\ r" & "\ r\n" einzelne Zeilen erzeugen, wenn Sie im Header content-type: text/plain
verwenden.
Achtung: Wenn Sie den folgenden PHP-Code eingeben:
$message='ab<br>cd<br>e<br>f';
print $message.'<br><br>';
$message=str_replace('<br>',"\r\n",$message);
print $message;
sie erhalten im Windows-Browser Folgendes:
ab
cd
e
f
ab cd e f
und mit content-type: text/plain
erhalten Sie in einer E-Mail-Ausgabe Folgendes:
ab
cd
e
f
Das hat bei mir funktioniert.
$message = nl2br("
===============================\r\n
www.domain.com \r\n
===============================\r\n
From: ".$from."\r\n
To: ".$to."\r\n
Subject: ".$subject."\r\n
Message: ".$_POST['form-message']);