Welke tekens zijn toegestaan in een e-mail adres?

Ik vraag niet naar volledige e-mail validatie.

Ik wil alleen weten wat de toegestane karakters zijn in user-name en server delen van e-mail adressen. Dit is misschien te simpel, misschien kunnen e-mailadressen andere vormen aannemen, maar dat kan me niet schelen. Ik'm vraag alleen over deze eenvoudige vorm: user-name@server (bijv. wild.wezyr@best-server-ever.com) en toegestane tekens in beide delen.

Oplossing

Zie RFC 5322: Internet Message Format en, in mindere mate, RFC 5321: Simple Mail Transfer Protocol.

RFC 822 heeft ook betrekking op e-mailadressen, maar behandelt voornamelijk de structuur ervan:

 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

En zoals gewoonlijk heeft Wikipedia een behoorlijk artikel over e-mailadressen:

Het lokale deel van het e-mail adres mag elk van deze ASCII karakters gebruiken:

  • hoofdletters en kleine letters Latijnse letters A tot Z en a tot z;
  • cijfers 0 tot 9;
  • speciale tekens !#$%&'*+-/=?^_`{|}~;
  • punt ., op voorwaarde dat het niet het eerste of laatste teken is, tenzij tussen aanhalingstekens, en op voorwaarde dat het niet opeenvolgend voorkomt, tenzij tussen aanhalingstekens (bijv. John..Doe@example.com is niet toegestaan, maar "John..Doe"@example.com is toegestaan);
  • spaties en "(),:;@[\] tekens zijn toegestaan met beperkingen (ze zijn alleen toegestaan binnen een geciteerde string, zoals beschreven in de paragraaf hieronder, en bovendien moet een backslash of dubbele aanhalingstekens worden voorafgegaan door een backslash);
  • commentaar is toegestaan met haakjes aan beide uiteinden van het lokale deel; bijv. john.smith(comment)@voorbeeld.com en (comment)john.smith@example.com zijn beide equivalent aan john.smith@example.com.

Naast ASCII-tekens kunt u vanaf 2012 ook internationale tekens boven U+007F gebruiken, gecodeerd als UTF-8 zoals beschreven in de RFC 6532 spec en uitgelegd op Wikipedia. Merk op dat deze standaarden vanaf 2019 nog steeds gemarkeerd zijn als Proposed, maar langzaam worden uitgerold. De veranderingen in deze spec voegden in wezen internationale karakters toe als geldige alfanumerieke karakters (atext) zonder de regels voor toegestane & beperkte speciale karakters zoals !# en @: aan te tasten.

Voor validatie, zie Using a regular expression to validate an email address.

Het domein gedeelte is gedefinieerd als volgt:

De Internet standaarden (Request for Comments) voor protocollen mandateren dat component hostname labels alleen de ASCII letters a tot en met z mogen bevatten (op een hoofdletter-ongevoelige manier), de cijfers 0 tot en met 9, en het koppelteken (-). De oorspronkelijke specificatie van hostnamen in RFC 952, schreef voor dat labels niet mochten beginnen met een cijfer of met een koppelteken, en niet mochten eindigen met een koppelteken. Een latere specificatie (RFC 1123) stond echter toe dat hostnaamlabels met cijfers begonnen. Andere symbolen, interpunctietekens of spaties zijn niet toegestaan.

Commentaren (18)

Wikipedia heeft hier een goed artikel over, en de officiële spec is hier. Van Wikipdia:

Het lokale deel van het e-mail adres mag elk van deze ASCII tekens gebruiken:

  • Engelse hoofdletters en kleine letters (a-z, A-Z)
  • Cijfers 0 tot 9
  • Tekens ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Teken . (punt, punt, punt) op voorwaarde dat het niet het eerste of het laatste teken is, en op voorwaarde dat het niet twee of meer keer na elkaar voorkomt.

Bovendien zijn geciteerde strings (bijv: "John Doe"@example.com) toegestaan, zodat tekens zijn toegestaan die anders verboden zouden zijn, maar die in de praktijk niet voorkomen. RFC 5321 waarschuwt ook dat "a host that expects to receive mail SHOULD avoid defining mailboxes where the Local-part requires (or uses) the Quoted-string form".

Commentaren (3)

U kunt beginnen bij wikipedia artikel:

  • Hoofdletters en kleine letters (a-z, A-Z)
  • Cijfers 0 tot 9
  • Tekens ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Teken . (punt, punt, punt) op voorwaarde dat het niet het eerste of het laatste teken is, en op voorwaarde dat het niet twee of meer keer na elkaar voorkomt.
Commentaren (0)