2010-07-14 16 views

risposta

16

Se questo è per terminare le linee in una e-mail, allora è la specifica per la posta elettronica che è necessario esaminare, non ciò che viene utilizzato su una particolare piattaforma.

Lines in e-mail sono terminati da CRLF ("\ r \ n") in base al RFC2821

comandi SMTP e, a meno che non alterata da un'estensione servizio, dati del messaggio, vengono trasmessi in "linee" . Le righe sono terminate dalla sequenza caratteri ASCII "CR" (valore esadecimale 0D) seguito immediatamente da ASCII carattere "LF" (valore esadecimale 0A). Questa sequenza di terminazione è indicata come in questo documento. Conforme implementazioni NON DEVE riconoscere o generare qualsiasi altro carattere o la sequenza di caratteri come una linea terminatore

Questo sembra abbastanza chiaro che in una e-mail alla fine della riga deve essere inviato come \ r \ n. L'invio di qualcos'altro potrebbe funzionare ma è sbagliato a meno che non si stia utilizzando una "estensione di servizio" e se si è quindi probabilmente si sa cosa si dovrebbe inviare comunque.

+0

+1 per la consultazione della RFC. Ora che l'hai pubblicato, ho un vago ricordo di averlo letto una volta. –

+0

Fantastico. Grazie per l'ottima spiegazione JB. – Metropolis

+1

PHP su Linux sembra utilizzare \ n per separare le linee di intestazione quando viene utilizzato il comando mail(). Quindi, se si utilizza \ r \ n all'interno di un'intestazione personalizzata, alcuni server di posta interpretano questo come due caratteri di nuova riga e mostrano parte dell'intestazione nella posta. (scusa per il commento di fine anno, ma questo è ancora un problema in PHP 5.2, vedi anche http://fluxbb.org/development/core/tickets/667/) – BurninLeo

0

\r\n è la nuova linea di Windows, se siete clienti sono per lo più gli utenti di Windows allora questo vi farà bene.

Inoltre, credo che la maggior parte dei client di posta elettronica non Windows compenseranno comunque ciò, quindi \r\n non dovrebbe essere un problema su Mac o * Nix.

1

Giusto per essere sicuro:

PHP_EOL non avrà alcun effetto sulla e-mail al lato ricevitore. Utilizzerà la combinazione di caratteri della nuova riga che è comune nel sistema su cui è in esecuzione lo script PHP.

Quindi, se si dispone di un server Linux/Unix, PHP_EOL si tradurrà in \n e se si dispone di un server Windows, sarà \r\n.

Oggi, non dovrebbe importa più di tanto che si utilizza ed io pensare che la maggior parte delle applicazioni di posta elettronica Windows possono gestire solo \n (per quanto ne so, anche WordPad capisce questo, è il Blocco note che ha dei problemi).

Problemi correlati