Quali caratteri sono ammessi in un indirizzo e-mail?

Non sto chiedendo la convalida completa dell'e-mail.

Voglio solo sapere quali sono i caratteri consentiti nelle parti nome utente e server dell'indirizzo email. Questo potrebbe essere troppo semplificato, forse gli indirizzi email possono assumere altre forme, ma non mi interessa. Sto chiedendo solo questa semplice forma: nome utente@server (ad esempio wild.wezyr@best-server-ever.com) e i caratteri ammessi in entrambe le parti.

Soluzione

Vedi RFC 5322: Internet Message Format e, in misura minore, RFC 5321: Simple Mail Transfer Protocol.

Anche RFC 822 copre gli indirizzi e-mail, ma si occupa principalmente della sua struttura:

 addr-spec   =  local-part "@" domain        ; global address     
 local-part  =  word *("." word)             ; uninterpreted
                                             ; case-preserved

 domain      =  sub-domain *("." sub-domain)     
 sub-domain  =  domain-ref / domain-literal     
 domain-ref  =  atom                         ; symbolic reference

E come al solito, Wikipedia ha un discreto articolo sugli indirizzi e-mail:

La parte locale dell'indirizzo e-mail può utilizzare uno qualsiasi di questi caratteri ASCII:

  • lettere latine maiuscole e minuscole da A a Z e da a a z;
  • cifre da 0 a 9;
  • caratteri speciali !#$%&'*+-/=?^_`{|}~;
  • punto ., a condizione che non sia il primo o l'ultimo carattere a meno che non sia citato, e a condizione anche che non appaia consecutivamente a meno che non sia citato (ad esempio John..Doe@example.com non è permesso ma "John..Doe"@example.com è permesso);
  • lo spazio e i caratteri "(),:;@[\] sono permessi con restrizioni (sono permessi solo all'interno di una stringa virgolettata, come descritto nel paragrafo seguente, e in aggiunta, un backslash o un double-quote devono essere preceduti da un backslash); I commenti sono ammessi con le parentesi alle due estremità della parte locale; ad esempio, john.smith(comment)@example.com e (comment)john.smith@example.com sono entrambi equivalenti a john.smith@example.com.

Oltre ai caratteri ASCII, a partire dal 2012 è possibile utilizzare i caratteri internazionali caratteri sopra U+007F, codificati come UTF-8 come descritto nella RFC 6532 spec e spiegato su Wikipedia. Si noti che a partire dal 2019, questi standard sono ancora segnati come Proposed, ma sono in fase di roll out lentamente. Le modifiche in questa spec hanno essenzialmente aggiunto i caratteri internazionali come caratteri alfanumerici validi (atext) senza influenzare le regole sul consentito & caratteri speciali limitati come !# e @:.

Per la validazione, vedi Usare un'espressione regolare per validare un indirizzo email.

La parte domain è definita come segue:

Gli standard Internet (Request for Comments) per i protocolli impongono che le etichette degli hostname dei componenti possano contenere solo le lettere ASCII da a a z (in modo indifferente alle maiuscole), le cifre da 0 a 9, e il trattino (-). La specifica originale dei nomi host in RFC 952, imponeva che le etichette non potessero iniziare con una cifra o con un trattino, e non dovevano finire con un trattino. Tuttavia, una specifica successiva (RFC 1123) ha permesso alle etichette degli hostname di iniziare con delle cifre. Non sono permessi altri simboli, caratteri di punteggiatura o spazi vuoti.

Commentari (18)

Wikipedia ha un buon articolo su questo, e la specifica ufficiale è qui. Da Wikipdia:

La parte locale dell'indirizzo e-mail può utilizzare uno qualsiasi di questi caratteri ASCII:

  • Lettere inglesi maiuscole e minuscole (a-z, A-Z)
  • Cifre da 0 a 9
  • Caratteri ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Carattere . (punto, punto, punto fermo) a condizione che non sia il primo o l'ultimo carattere, e a condizione anche che non appaia due o più volte consecutivamente.

Inoltre, le stringhe virgolettate (cioè: "John Doe"@example.com) sono permesse, permettendo così caratteri che altrimenti sarebbero proibiti, tuttavia non appaiono nella pratica comune. RFC 5321 avverte anche che "un host che si aspetta di ricevere posta DOVREBBE evitare di definire caselle di posta dove la parte locale richiede (o usa) la forma Quoted-string".

Commentari (3)

Puoi iniziare da articolo di wikipedia:

  • Lettere inglesi maiuscole e minuscole (a-z, A-Z)
  • Cifre da 0 a 9
  • Caratteri ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Carattere . (punto, punto, punto fermo) a condizione che non sia il primo o l'ultimo carattere, e a condizione anche che non appaia due o più volte consecutivamente.
Commentari (0)