2013-03-21 9 views
15

Il metodo standard per formattare il 'From' intestazione del messaggio èCome formattare una e-mail 'Da' intestazione che contiene una virgola

From: John Doe <[email protected]> 

ma cosa fare se c'è una virgola nel nome?

From: John Doe, chief bottle washer <[email protected]> 

Se lo faccio, il mio MTA converte automaticamente questo in:

From: [email protected], [email protected], chief bottle washer <[email protected]> 

La mia prima risposta è quella di utilizzare le virgolette doppie attorno il nome completo, ma non riesco a trovare alcuna documentazione ufficiale attestante questo e vorrei che le mie e-mail fossero leggibili da tutti i client di posta elettronica.

+2

Questa domanda e le risposte hanno un numero sorprendente di voti negativi. L'informazione sembra buona. Perché i downvotes? –

risposta

3

I campi dell'intestazione dell'e-mail sono definiti da RFC 5322. La sezione pertinente per più mittenti nell'intestazione From è 3.6.2. Le sezioni pertinenti per la citazione dei delimitatori sono 3.2.1 e 3.2.4.

+0

Se sto interpretando correttamente questo RFC (e queste cose non sono affatto leggibili dall'uomo), la soluzione è racchiudere tra virgolette Da: "John Doe, chief bottle washer" <[email protected]>? ?? – Dalin

+0

Inoltre, c'è qualche danno nel fasciare tutti i nomi tra virgolette, indipendentemente dal fatto che sia presente una virgola (o altro carattere illegale)? – Dalin

+2

Sì, è il modo corretto. L'uso di virgolette per tutto il tempo non danneggia nulla, assicurati di sfuggire a una virgola doppia se appare nel nome visualizzato. –

18

Per elaborare la risposta di @ Fls'Zen, sì il metodo corretto è racchiudere il nome tra virgolette.

Da un punto di vista pratico non c'è nulla di male nel racchiudere tutti i nomi tra virgolette, basta essere sicuri di sfuggire a una virgoletta se appare nel nome visualizzato \" (o semplicemente sostituire con una virgoletta singola). Ma se vuoi essere completamente conforme alle specifiche, non dovresti usare le virgolette se non devi.

Per tutti i dettagli densi, i campi dell'intestazione e-mail sono definiti da RFC 5322. La sezione pertinente per più mittenti nell'intestazione From è 3.6.2 e le sezioni pertinenti per la citazione dei delimitatori sono 3.2.1 e 3.2.4.

1

Quando lo following regular expression matches, è necessario indicare un indirizzo di visualizzazione e-mail.

[^-A-Za-z0-9!#$%&'*+/=?^_`{|}~\s] 

per i caratteri ASCII, questo può essere fatto per sfuggire caratteri doppi apici con un backslash, e racchiudendo la stringa tra virgolette. Per i caratteri non ASCII, è necessario il più complesso MIME escaping.

+1

Sono ammessi caratteri di spaziatura. Quindi questo sarebbe '[^ -A-Za-z0-9! # $% & \ '* + -/=?^_ \' {|} ~ \\ s] + 'con' \ s' è il bianco classe di caratteri spaziali. – JonnyJD

+1

E il secondo '-' è troppo. In questo modo include tutti i caratteri tra '+' e '/'. Quindi la regex completa che funziona per me è: '[^ -A-Za-z0-9! # $% & \ '* +/=?^_ \' {|} ~ \\ s] + 'The'' ' deve solo essere sfuggito quando si racchiude la stringa con esso. Quindi racchiudere in '" 'questo sarebbe corretto:' [^ -A-Za-z0-9! # $% & '* +/=?^_ \ '{|} ~ \\ s] +' – JonnyJD

+0

Grazie , Ho incorporato i tuoi suggerimenti. –