Veo muchas implementaciones de correo PHP usando "\ r \ n", pero también he visto algunas usando la constante PHP_EOL. ¿Cuál es mejor?¿Se debería usar PHP_EOL en los correos electrónicos?
Gracias por cualquier ayuda
Metropolis
Veo muchas implementaciones de correo PHP usando "\ r \ n", pero también he visto algunas usando la constante PHP_EOL. ¿Cuál es mejor?¿Se debería usar PHP_EOL en los correos electrónicos?
Gracias por cualquier ayuda
Metropolis
Si esto es para terminar líneas en un correo electrónico, entonces es la especificación de correo electrónico que debe mirar, no lo que se utiliza en una plataforma en particular.
Líneas en email se terminan mediante CRLF ("\ r \ n") de acuerdo con RFC2821
comandos SMTP y, a menos alterada por una extensión servicio, datos del mensaje, se transmiten en "líneas" . Las líneas consisten en cero o más datos caracteres terminados por la secuencia carácter ASCII "CR" (valor hexadecimal 0D) seguidos inmediatamente por ASCII carácter "LF" (valor hexadecimal 0A). Esta secuencia de terminación se denota como en este documento. conformes implementaciones NO DEBEN reconocer o generar cualquier otro carácter o secuencia de caracteres como una línea terminador
Eso parece bastante claro que en un correo electrónico al final de la línea es para ser enviados como \ r \ n. Enviar cualquier otra cosa podría funcionar, pero está mal, a menos que esté usando una "extensión de servicio" y, si lo está, probablemente sepa lo que debe enviar de todos modos.
\r\n
es la nueva línea de Windows, si estás clientes son en su mayoría los usuarios de Windows, entonces esto le hará bien.
También creo que la mayoría de los clientes de correo electrónico que no sean de Windows compensarán esto de todos modos, por lo que \r\n
no debería ser un problema en Mac o * Nix.
Sólo para asegurarse de:
PHP_EOL
tendrá ningún efecto sobre el correo electrónico en el ladoreceptor. Utilizará la nueva combinación de caracteres de línea que es común en el sistema en el que se ejecuta su secuencia de comandos PHP.
Si tiene un servidor Linux/Unix, PHP_EOL
dará como resultado \n
y si tiene un servidor de Windows, será \r\n
.
Hoy en día, no debería importa tanto que se utilice y yo creo que la mayoría de aplicaciones de correo electrónico de Windows también pueden manejar casi \n
(que yo sepa aún WordPad entiende esto, es el Bloc de notas que tiene problemas).
+1 para consultar el RFC. Ahora que has publicado eso, recuerdo vagamente haber leído eso una vez. –
Impresionante. Gracias por la gran explicación JB. – Metropolis
PHP en Linux parece usar \ n para separar las líneas de encabezado cuando se usa el comando mail(). Entonces, si usa \ r \ n dentro de un encabezado personalizado, algunos servidores de correo interpretan esto como dos caracteres nuevos y muestran parte del encabezado en el correo. (perdón por el comentario del año anterior, pero este sigue siendo un problema en PHP 5.2, ver también http://fluxbb.org/development/core/tickets/667/) – BurninLeo