新行(\ r \ n)在电子邮件正文中不起作用

问题描述 投票:45回答:11

我正在使用PHP mail()函数:

    $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);

当我收到此电子邮件时,它看起来像这样:

CCCC CCCC CCCC CCC CCC CCC CCCC

我希望这样的事情:

CCCC
CCCC CCCC CCC 
CCC 
CCC 
CCCC

没有Content-Type HTTP标头,它工作正常。如何创建新行并仍然使用我的“内容类型”声明?

php email newline content-type
11个回答
84
投票

你需要使用<br>,因为你的Content-Typetext/html

它没有Content-Type标题,因为那时你的电子邮件将被解释为纯文本。如果你真的想使用\n你应该使用Content-Type: text/plain然后你会失去任何标记。

另请参阅类似的问题here


0
投票

“\ n \ r”生成2个新行,而“\ n”,“\ r”和“\ r \ n”生成单行,如果在标题中使用' \r\n'

注意:如果你执行以下PHP代码:

content-type: text/plain

您在Windows浏览器中获得以下内容:

    $message='ab<br>cd<br>e<br>f';
print $message.'<br><br>';
    $message=str_replace('<br>',"\r\n",$message);
print $message;

并使用ab cd e f ab cd e f ,您可以在电子邮件输出中获得以下内容;

content-type: text/plain

0
投票

对于邮件功能中的文本/纯文本邮件肯定使用PHP_EOL常量,您可以将它与它结合使用 对于text / html文本也是如此:

ab
cd
e
f

21
投票

如果您要发送HTML电子邮件,请按照说明使用<BR>(或<BR />或</BR>)。 如果您要发送纯文本电子邮件,请使用%0D%0A \ r =%0D(Ctrl + M =回车) \ n =%0A(Ctrl + A =换行) 如果您的电子邮件中有电子邮件链接, 例如

<A HREF="mailto?To=...&Body=Line 1%250D%250ALine 2">Send email</A>

然后使用%250D%250A

%25 = %


6
投票

你需要使用<br>而不是\r\n。为此你可以使用内置函数调用nl2br所以你的代码应该是这样的

 $message = nl2br("CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC");

4
投票

如果你使用content-type: text/html,你需要放一个<br>,因为你的消息将像html文件一样被威胁。

但是,如果你将content-type改为text/plain而不是text/html,你将能够使用\r\n字符。


1
投票

使用qazxsw poi并不总是足够的。如果你不通过使用它告诉outlook它是一个自我关闭的html标签,MS Outlook 2007将忽略这一点

<BR>

1
投票

您可以使用%0A字符代码在text / plain内容类型中添加换行符。

例如:

 <BR />

这是<a href="mailto:[email protected]?subject=Hello%20again&body=HI%20%0AThis%20is%20a%20new%20line"/>


0
投票

这对我有用。

jsfiddle

0
投票
$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']);

在我的情况下,当一个空白空间添加' ' 开始工作时,空间不见了


0
投票

另一件事使用“”,“\ r \ n”和“\ r \ n”之间有区别。

© www.soinside.com 2019 - 2024. All rights reserved.