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?
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
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 = %
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");
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
.
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.
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 />
$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']);
' '
Faltava espaço no meu caso, quando um espaço em branco adicionado ' \r\n'
começou a funcionar
Outra Coisa usar"", há uma diferença entre" \r\n " e "\r\n".