J'utilise la fonction mail () PHP:
$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);
Quand je reçois cet email, il ressemble à ceci:
CCCC CCCC CCCC CCC CCC CCC CCCC
Je m'attendrais à quelque chose comme ça:
CCCC
CCCC CCCC CCC
CCC
CCC
CCCC
Cela fonctionne très bien sans en-tête "Content-type:". Comment puis-je créer de nouvelles lignes et utiliser ma déclaration Content-type?
Vous devez utiliser un <br>
car votre content-type
est text/html
.
cela fonctionne sans l'en-tête content-type
car votre e-mail sera alors interprété en texte brut. Si vous voulez vraiment utiliser \n
, vous devriez utiliser content-type: text/plain
, mais vous perdrez tout balisage.
question similaire ici
Si vous envoyez un courrier électronique HTML, utilisez <BR> (ou <BR />) comme indiqué.
Si vous envoyez un e-mail en texte brut, utilisez % 0D% 0A
\r = % 0D (Ctrl + M = retour chariot)
\n = % 0A (Ctrl + A = saut de ligne)
Si vous avez un lien email dans votre email,
PAR EXEMPLE
<A HREF="mailto?To=...&Body=Line 1%250D%250ALine 2">Send email</A>
Ensuite, utilisez % 250D% 250A
% 25 =%
Vous devez utiliser <br>
au lieu de \r\n
. Pour cela, vous pouvez utiliser l’appel de fonction intégré nl2br Votre code doit donc ressembler à ceci:
$message = nl2br("CCCC\r\nCCCC CCCC \r CCC \n CCC \r\n CCC \n\r CCCC");
Si vous utilisez content-type: text/html
, vous devez mettre un <br>
car votre message sera traité comme un fichier html .
Mais si vous changez votre content-type
en text/plain
au lieu de text/html
, vous pourrez utiliser des caractères \r\n
.
Utiliser <BR>
is n'est pas toujours suffisant. MS Outlook 2007 l'ignorera si vous n'indiquez pas à Outlook qu'il s'agit d'une balise HTML à fermeture automatique à l'aide de
<BR />
Vous pouvez ajouter un nouveau caractère de ligne dans le type de contenu text/plain à l'aide du code de caractère % 0A.
Par exemple:
<a href="mailto:[email protected]?subject=Hello%20again&body=HI%20%0AThis%20is%20a%20new%20line"/>
Voici le jsfiddle
Une autre chose utilise "", il y a une différence entre "\ r\n" et '\ r\n'.
' '
de l'espace manquait dans mon cas, lorsqu'un espace vide ajouté ' \r\n'
a commencé à fonctionner
"\ n\r" génère 2 nouvelles lignes tandis que "\ n", "\ r" & "\ r\n" ne produisent que des lignes si, dans l'en-tête, vous utilisez content-type: text/plain
.
Attention: Si vous faites le code php suivant:
$message='ab<br>cd<br>e<br>f';
print $message.'<br><br>';
$message=str_replace('<br>',"\r\n",$message);
print $message;
vous obtenez ce qui suit dans le navigateur Windows:
ab
cd
e
f
ab cd e f
et avec content-type: text/plain
vous obtenez le texte suivant dans un courrier électronique;
ab
cd
e
f
Cela a fonctionné pour moi.
$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']);