linha ( ) não estão a trabalhar no corpo de E-mail

estou a usar a função 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);
Quando recebo este e-mail, parece-se com isto:
CCCC CCCC CCCC CCC CCC CCC CCCC
Eu esperaria algo assim.
CCCC
CCCC CCCC CCC 
CCC 
CCC 
CCCC

funciona bem sem cabeçalho" Content-type:". Como posso fazer novas linhas e usar a minha declaração do tipo Conteúdo?

Author: Verbatus, 2013-04-17

9 answers

Tem de usar um <br> porque o seu content-type é text/html.

Funciona sem o cabeçalho content-type porque então o seu e-mail será interpretado um texto simples. Se você realmente quiser usar \n você deve usar content-type: text/plain mas então você vai perder qualquer marcação.

Pergunta Similar aqui

 73
Author: errieman, 2017-05-23 11:47:28

Se está a enviar e-mail HTML, então use
(ou
) como indicado.
Se estiver a enviar um e-mail de texto simples, então use % 0D % 0A
\r = % 0D (Ctrl+M = carriage return)
\n = %0A (Ctrl+A = fonte de linha)

Se você tem um link de E-mail no seu e-mail,
EG

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

Depois utilizar %250 D%250 a

%25 = %

 17
Author: Mark A., 2016-01-06 20:43:22

Tem de usar <br> em vez de \r\n . Para isso, poderá usar a chamada de funções built in nl2br O teu código deve ser assim.

 $message = nl2br("CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC");
 6
Author: Sanoob, 2015-02-23 06:32:56

Se USAR content-type: text/html Tem de colocar um <br> porque a sua mensagem será Triada como um ficheiro html.

Mas se mudar o seu content-type para text/plain em vez de text/html, poderá usar os caracteres \r\n.

 4
Author: Nut_Shot, 2015-03-14 14:26:15

Você pode adicionar um novo carácter de linha no tipo texto / conteúdo simples usando % 0A código de caracteres.

Por exemplo:

<a href="mailto:[email protected]?subject=Hello%20again&body=HI%20%0AThis%20is%20a%20new%20line"/>
Aqui está o jsfiddle.
 1
Author: John, 2017-06-01 14:40:41

Utilizar <BR> não é sempre suficiente. O MS Outlook 2007 irá ignorar isto se você não disser ao outlook que é uma tag html auto-fechada usando

 <BR />
 0
Author: Windkin, 2015-04-29 10:06:06
Isto funcionou comigo.
$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
Author: Naiguel Developer, 2017-03-10 11:47:18
' '   

Faltava espaço no meu caso, quando um espaço em branco adicionado ' \r\n' começou a funcionar

 0
Author: Arun Prasad E S, 2018-03-18 15:46:38

Outra Coisa usar"", há uma diferença entre" \r\n " e "\r\n".

 0
Author: Mike Q, 2018-04-08 22:13:35