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

2022-08-30 08:40:50

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

    $to      = 'AAAA <postmaster@xxx.xx>';
    $subject = 'BBBB';
    $message = "CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC";
    $headers = 'From: DDD<postmaster@xxx.xx>' . "\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


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


答案 1

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

它可以在没有标题的情况下工作,因为这样您的电子邮件将被解释为纯文本。如果你真的想使用,你应该使用,但这样你会失去任何标记。Content-Type\nContent-Type: text/plain

也看看类似的问题 请点击此处。.


答案 2

如果您要发送HTML电子邮件,请使用<BR>(或<BR />,或< / BR>),如前所述。
如果要发送纯文本电子邮件,请使用 %0D%0A
\r = %0D(Ctrl+M = 回车符)
\n = %0A(Ctrl+A = 换行)

如果您的电子邮件中有电子邮件链接,
EG

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

然后使用 %250D%250A

%25 = %


推荐