Я использую функцию 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
Он отлично работает без заголовка Content-type:. Как я могу создавать новые строки и использовать объявление Content-type?
Вам нужно использовать файл, потому что ваш content-type
– text/html
.
он работает без заголовка content-type
потому что тогда ваше электронное письмо будет интерпретироваться простым текстом. Если вы действительно хотите использовать \n
вы должны использовать content-type: text/plain
но тогда вы потеряете любую разметку.
аналогичный вопрос здесь
Если вы отправляете HTML-адрес электронной почты, используйте <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 =%
Вам нужно использовать вместо \r\n
. Для этого вы можете использовать встроенный вызов функции nl2br. Таким образом, ваш код должен быть таким
$message = nl2br("CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC");
Если вы используете content-type: text/html
вам нужно поместить файл, потому что ваше сообщение будет создано как html-файл .
Но если вы измените свой content-type
на text/plain
вместо text/html
вы сможете использовать символы \r\n
.
Вы можете добавить новый символ строки в текстовый / обычный контент с использованием символьного кода % 0A .
Например:
<a href="mailto:someone@example.com?subject=Hello%20again&body=HI%20%0AThis%20is%20a%20new%20line"/>
Вот jsfiddle
Использование <BR>
не всегда достаточно. MS Outlook 2007 проигнорирует это, если вы не сообщите, что это самозакрывающийся тег html, используя
<BR />
Это сработало для меня.
$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']);