Qui saut de ligne dans php-tête du message, \r\n ou \n?
J'ai vu beaucoup d'exemples à l'aide de la fonction mail de php. Certains d'entre eux d'utilisation \r\n saut de ligne pour l'en-tête, certains, \n.
$headers = "From: Just Me\n";
$headers .= "Reply-To: Just me <$email>\n";
vs
$headers = "From: Just Me\r\n";
$headers .= "Reply-To: Just me <$email>\r\n";
laquelle est la bonne?
J'ai parfois eu des cas où les \r\n permet et une partie de l'en-tête est interprété par certains clients de messagerie de messagerie texte (le fait de perdre ces informations d'en-tête) - est-ce parce que \r\n est le problème?
Vous devez vous connecter pour publier un commentaire.
Le CRLF
\r\n
, doit être utilisé selon la la documentation php. Aussi, pour se conformer à la RFC 2822 spec lignes doivent être délimités par le caractère de retour chariot, CR\r
immédiatement suivie par la ligne d'alimentation, LF\n
.Depuis
\r\n
est natif pour les plates-formes Windows et\n
sous Unix, vous pouvez utiliser lePHP_EOL
Docs constante sur Windows, ce qui est le propre caractère de nouvelle ligne pour la plate-forme le script est actuellement en cours d'exécution sur.\r\n
, à l'aide de la constantePHP_EOL
sera certainement violent que sur tous les non-MS-Windows plates-formes. Pourquoi devrait-on l'utiliser? Utiliser le littéral\r\n
et tout est très bien.Juste au cas où un moteur de recherche capte et enregistre quelqu'un d'autre la frustration, je suis allé à travers: voici un supplémentaire de curiosité.
Sur php 5.2 x sur Linux, j'ai eu \r\n sur mes e-mails dans mail () de php, après une mise à jour de php 5.3.3, la mise en forme et l'envoi mystérieusement échoué. Retrait de la \r fixe le script (après examen de beaucoup de beaucoup d'autres possibilités).
Comme indiqué ci-dessus, \r\n que vous devriez utiliser selon la RFC, mais cela rompt avec vos en-têtes sur plusieurs systèmes de messagerie (f.j'. Outlook 2003). Même si le \n n'est pas le " bon " saut de ligne à utiliser, dans mon expérience, il fonctionne correctement sur tous les systèmes de messagerie que j'ai rencontré jusqu'à présent. De ce fait, j'ai toujours utiliser seulement \n.
La RFC officiellement mandats CRLF (\r\n) mais en utilisant Unix pauses (\n) pour les en-têtes, vous fera économiser un tas de tracas. Certains serveurs de messagerie, tels que qmail, rejetteront votre message si il utilise \r\n.
Source: expérience, confirmée par cette remarque: http://www.php.net/function.mail#40204
Mon expérience:
Les e-mails HTML travaillaient dans les clients web, mais la rupture en MS en fonction de clients de bureau (entourage, outlook). A l'aide de \r\n. Retiré de la \r sur le MIME-Version et travaille aujourd'hui à travers le conseil d'administration.
J'ai eu le problème de gmail malentendu \r\n-têtes de, mais en les laissant simplement l'en-tête des sauts de ligne à \n était pas assez dans mon cas, parce que dans ce cas, certaines versions d'Outlook ont montré des e-mails comme du vide.
La solution dans https://stackoverflow.com/a/7960957 (j'ai choisi d'installer postfix 2.9 lucide d'un ppa) couplé avec l'aide de \n semble fonctionner un peu partout maintenant.
J'ai modifié mon script pour l'utiliser PHP_EOL à la place qui semble fonctionner -- comme ceci:
NB. Assurez-vous de nous "au lieu de" que ce dernier ne semble pas fonctionner!