web-dev-qa-db-fra.com

newline ne fonctionne pas dans PHP mail

J'utilise les éléments suivants pour envoyer un e-mail:

<php ....
$message = 'Hi '.$fname.', \r\n Your entries for the week of '
   .$weekof.' have been reviewed. \r\n Please login and View Weekly reports to see the report and comments. \r\n Thanks, \r\n'.$myname;

mail($to, $subject, $message, $from);
?>

Lorsque le message est reçu, il ne démarre pas une nouvelle ligne sur le "\ r\n" mais les imprime simplement comme partie du message.

Je ne l'ai essayé que dans Thunderbird 3, pas dans aucun autre client.

46
ChuckO

Essayez de changer votre ' à " - php interprète une chaîne entre guillemets simples comme des littéraux, tandis qu'avec des guillemets (") il étendra le \r\n à ce que vous voulez.

Plus d'informations: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single

108
Oren

Pas une réponse à la question, mais peut être utile à quelqu'un.

Envoyez un message HTML et au lieu de\n, utilisez <BR>.

Et utilise <PRE></PRE> ou CSS pour le texte préformaté, traduisant ainsi\n en de nouvelles lignes réelles.

$headerFields = array(
    "From: [email protected]",
    "MIME-Version: 1.0",
    "Content-Type: text/html;charset=utf-8"
    );
mail($to, $subj, $msg, implode("\r\n", $headerFields));
5
Harijs Krūtainis
<?php ....
$message = "Hi ".$fname.", \r\n Your entries for the week of "
   .$weekof." have been reviewed. \r\n Please login and View Weekly reports to see the report and comments. \r\n Thanks, \r\n".$myname;

mail($to, $subject, $message, $from);
?>
2
kayleighsdaddy