salto mail linea php email header

mail - salto de linea en php



¿Qué salto de línea en el encabezado del correo php, / r / n o / n? (7)

He visto muchos ejemplos usando la función de correo php. Algunos de ellos usan / r / n como salto de línea para el encabezado, algunos usan / 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";

cual es correcto?

A veces he tenido casos en los que se usa / r / n y algunos clientes de correo interpretan parte del encabezado como texto de correo (perdiendo la información del encabezado). ¿Esto es porque / r / n es incorrecto?


Cambié mi script para usar PHP_EOL que parece funcionar, como este:

//Set Content-type header $headers = "MIME-Version: 1.0" . PHP_EOL; $headers .= "Content-type: text/html; charset=iso-8859-1" . PHP_EOL; //Additional headers $headers .= "From: $from" . PHP_EOL; $headers .= "Cc: $cc" . PHP_EOL; $headers .= "Content-type: text/html" . PHP_EOL; $headers .= "Bcc: $bcc" . PHP_EOL;

NÓTESE BIEN. ¡Asegúrennos "en lugar de" ya que este último parece no funcionar!


Como se indicó anteriormente, / r / n es lo que debe usar de acuerdo con el RFC, pero esto rompe sus encabezados en varios sistemas de correo (fi Outlook 2003). Aunque / n no es el salto de línea ''apropiado'' para usar, en mi experiencia funciona correctamente en todos los sistemas de correo que he encontrado hasta ahora. Debido a esto, siempre uso simplemente / n.


El CRLF /r/n debe usarse de acuerdo con la documentación de php . Además, para ajustarse a las líneas de especificación RFC 2822 , debe estar delimitado por el carácter de retorno de carro, CR /r inmediatamente seguido de la alimentación de línea, LF /n .

Como /r/n es nativo de las plataformas Windows y /n de Unix, puede usar la constante PHP_EOL­Docs en Windows, que es el nuevo carácter de línea apropiado para la plataforma en la que se está ejecutando actualmente el script.


El RFC exige formalmente CRLF (/ r / n) pero el uso de interrupciones de Unix (/ n) para los encabezados le ahorrará mucha molestia. Algunos servidores de correo, como qmail, rechazarán su mensaje si usa / r / n.

Fuente: experiencia, confirmada por esta nota: http://www.php.net/function.mail#40204


En caso de que un motor de búsqueda lo recoja y le ahorre a otra persona la frustración que experimenté: aquí hay una curiosidad adicional.

En php 5.2x en Linux, tenía / r / n en mis encabezados de correo electrónico en php mail (), después de una actualización a php 5.3.3, el formateo y el envío fallaron misteriosamente. Al eliminar el archivo, se arregló el script (después de examinar muchas otras posibilidades).


Mi experiencia: los correos electrónicos en HTML funcionaban en clientes web, pero incluían clientes de escritorio basados ​​en MS (Entourage, Outlook). Estaba usando / r / n. Se eliminó el / r en la versión MIME solamente y ahora funciona en todos los ámbitos.


Tuve el problema de que gmail malentendió / r / n encabezados, pero simplemente dejar la línea de encabezado se rompe en / n no fue suficiente en mi caso, porque en ese caso algunas versiones de Outlook mostraban los correos electrónicos como vacíos.

La solución en https://.com/a/7960957 (elijo instalar postfix 2.9 en lúcido desde un ppa) junto con el uso de / n parece funcionar en todas partes ahora.