Question Quels caractères sont autorisés dans une adresse e-mail?


Je ne parle pas de la validation complète de l'email.

Je veux juste savoir dans quels caractères sont autorisés user-name et server parties de l'adresse e-mail. Cela peut être simplifié à l'extrême, peut-être que les adresses électroniques peuvent prendre d'autres formes, mais je m'en fiche. Je demande seulement sur ce formulaire simple: user-name@server (par exemple wild.wezyr@best-server-ever.com) et les caractères autorisés dans les deux parties.


466
2018-01-12 14:13


origine


Réponses:


Voir RFC 5322: Format de message Internet et, dans une moindre mesure, RFC 5321: Protocole de transfert de courrier simple.

RFC 822 couvre également les adresses e-mail, mais il traite principalement de sa structure:

 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

Et comme d'habitude, Wikipedia a un décent article sur les adresses email:

La partie locale de l'adresse électronique peut utiliser l'un de ces caractères ASCII:

  • lettres latines majuscules et minuscules A à Z et a à z;
  • chiffres 0 à 9;
  • caractères spéciaux !#$%&'*+-/=?^_`{|}~;
  • point ., à condition que ce ne soit pas le premier ou le dernier caractère, à moins qu'il ne soit cité, et à condition également qu'il n'apparaisse pas de manière consécutive, sauf s'il est cité (par ex. John..Doe@example.com n'est pas autorisé mais "John..Doe"@example.com est autorisée);
  • l'espace et "(),:;<>@[\] les caractères sont autorisés avec des restrictions (ils ne sont autorisés que dans une chaîne entre guillemets, comme décrit dans le paragraphe ci-dessous, et en plus, une barre oblique inverse ou une citation double doit être précédée d'une barre oblique inverse);
  • les commentaires sont autorisés avec des parenthèses à chaque extrémité de la partie locale; par exemple. john.smith(comment)@example.com et (comment)john.smith@example.com sont tous deux équivalents à john.smith@example.com.

En plus des caractères ASCII, à partir de 2012 vous pouvez utiliser international personnages ci-dessus  U+007F, encodé comme UTF-8.

Pour la validation, voir Utiliser une expression régulière pour valider une adresse e-mail.

le domain la partie est définie comme suit:

Les normes Internet (Request for Comments) pour les protocoles exigent que les étiquettes de nom d'hôte du composant ne contiennent que les lettres ASCII a par z (de manière insensible à la casse), les chiffres 0 par 9et le trait d'union (-). La spécification d'origine des noms d'hôte dans RFC 952, a exigé que les étiquettes ne puissent pas commencer par un chiffre ou par un trait d'union, et ne doivent pas se terminer par un trait d'union. Cependant, une spécification ultérieure (RFC 1123) les étiquettes de nom d'hôte autorisées commencent par des chiffres. Aucun autre symbole, caractère de ponctuation ou espace vide n'est autorisé.


615
2018-01-12 14:15



Fais attention! Il y a un tas de connaissances pourrissent dans ce fil (des choses qui étaient vraies et qui ne le sont plus).

Pour éviter les rejets faussement positifs d'adresses e-mail réelles dans le monde actuel et futur, et de n'importe où dans le monde, vous devez au moins connaître le concept de haut niveau de RFC 3490"Internationalisation des noms de domaine dans les applications (IDNA)". Je sais que les gens aux États-Unis et en A ne sont souvent pas au courant, mais c'est déjà utilisation généralisée et en croissance rapide partout dans le monde (principalement les parties dominées par les non-anglophones).

L'idée est que vous pouvez maintenant utiliser des adresses telles que mason @ 日本 .com et wildwezyr@fahrvergnügen.net. Non, ce n'est pas encore compatible avec tout ce qui existe (comme beaucoup l'ont déploré ci-dessus, même les simples identifiants de style qmail + sont souvent rejetés à tort). Mais il y a une RFC, il y a une spécification, elle est maintenant soutenue par l'IETF et l'ICANN, et - plus important - il y a un nombre important et croissant d'implémentations prenant en charge cette amélioration actuellement en service.

Je ne savais pas grand chose de ce développement jusqu'à ce que je revienne au Japon et que je commence à voir des adresses e-mail comme hei @ や る .ca et les URL Amazon comme ceci:

http://www.amazon.co.jp/ ス レ ク ト ロ ニ ク ポ - オ ー タ ブ ル オ b / b / ref = topnav_storetab_e, c'est-à-dire = UTF8 & node = 3210981

Je sais que vous ne voulez pas de liens vers les spécifications, mais si vous vous fiez uniquement aux connaissances obsolètes des pirates sur les forums Internet, votre validateur de messagerie finira par rejeter les adresses électroniques que les utilisateurs non-Enlish attendent de plus en plus. Pour ces utilisateurs, une telle validation sera tout aussi ennuyeuse que la forme banale de la mort cérébrale que nous détestons tous, celle qui ne peut pas gérer un nom de domaine en trois parties ou +.

Donc, je ne dis pas que ce n'est pas un problème, mais la liste complète des caractères "autorisés sous certaines conditions / aucune / aucune" est (presque) tous les caractères dans toutes les langues. Si vous voulez "accepter toutes les adresses e-mail valides (et bien d'autres non valides)", vous devez prendre en compte l'IDN, ce qui rend inutile une approche basée sur les caractères (désolé), sauf si vous convertir les adresses email internationalisées à Punycode.

Après avoir fait cela, vous pouvez suivre (la plupart des) les conseils ci-dessus.


260
2018-01-15 12:01



Le format de l'adresse e-mail est: local-part@domain-part (max 64 @ 255 caractères, pas plus de 256 au total).

le local-part et domain-part pourrait avoir différents jeux de caractères autorisés, mais ce n'est pas tout, car il y a plus de règles.

En général, la partie locale peut avoir ces caractères ASCII:

  • lettres latines minuscules: abcdefghijklmnopqrstuvwxyz,
  • lettres latines majuscules: ABCDEFGHIJKLMNOPQRSTUVWXYZ,
  • chiffres: 0123456789,
  • caractères spéciaux: !#$%&'*+-/=?^_`{|}~,
  • point: . (pas le premier ou le dernier caractère ou répété sauf si cité),
  • ponctuations spatiales telles que: "(),:;<>@[\] (avec quelques restrictions),
  • commentaires: () (sont autorisés entre parenthèses, par ex. (comment)john.smith@example.com).

Partie du domaine:

  • lettres latines minuscules: abcdefghijklmnopqrstuvwxyz,
  • lettres latines majuscules: ABCDEFGHIJKLMNOPQRSTUVWXYZ,
  • chiffres: 0123456789,
  • trait d'union: - (pas le premier ou le dernier caractère),
  • peut contenir une adresse IP entourée de crochets: jsmith@[192.168.2.1] ou jsmith@[IPv6:2001:db8::1].

Ces adresses électroniques sont valides:

  • prettyandsimple@example.com
  • very.common@example.com
  • disposable.style.email.with+symbol@example.com
  • other.email-with-dash@example.com
  • x@example.com (partie locale d'une lettre)
  • "much.more unusual"@example.com
  • "very.unusual.@.unusual.com"@example.com
  • "very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
  • example-indeed@strange-example.com
  • admin@mailserver1 (nom de domaine local sans domaine de premier niveau)
  • #!$%&'*+-/=?^_`{}|~@example.org
  • "()<>[]:,;@\\"!#$%&'-/=?^_`{}| ~.a"@example.org
  • " "@example.org (espace entre les citations)
  • example@localhost (envoyé depuis localhost)
  • example@s.solutions (voir le Liste des domaines Internet de premier niveau)
  • user@com
  • user@localserver
  • user@[IPv6:2001:db8::1]

Et ces exemples d'invalide:

  • Abc.example.com (non @ personnage)
  • A@b@c@example.com (seulement un @ est autorisé entre guillemets)
  • a"b(c)d,e:f;gi[j\k]l@example.com (aucun des caractères spéciaux de cette partie locale n'est autorisé entre guillemets)
  • just"not"right@example.com (les chaînes entre guillemets doivent être séparées par des points ou le seul élément constituant la partie locale)
  • this is"not\allowed@example.com(les espaces, les guillemets et les barres obliques inverses peuvent uniquement exister dans les chaînes entre guillemets et précédés d'une barre oblique inverse)
  • this\ still\"not\allowed@example.com (même si échappé (précédé d'une barre oblique inverse), les espaces, les guillemets et les antislashs doivent toujours être contenus entre guillemets)
  • john..doe@example.com (double point avant @) (avec mise en garde: Gmail laisse cela passer)
  • john.doe@example..com (double point après @)
  • une adresse valide avec un espace de premier plan
  • une adresse valide avec un espace de fin

La source: Adresse e-mail sur Wikipedia


Regex RFC2822 de Perl pour valider les emails:

(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)

L'expression rationnelle complète pour les adresses RFC2822 était un simple 3.7k.

Voir également: RFC 822 Email Address Parser en PHP.


Les définitions formelles des adresses électroniques se trouvent dans:

  • RFC 5322 (sections 3.2.3 et 3.4.1, obsoletes RFC 2822), RFC 5321, RFC 3696,
  • RFC 6531 (caractères autorisés).

En relation:


22
2017-08-05 10:45



Wikipedia a un bon article à ce sujet, et la spécification officielle est ici. De Wikipdia:

La partie locale de l'adresse de messagerie peut utiliser l'un de ces caractères ASCII:

  • Lettres anglaises majuscules et minuscules (a-z, A-Z)
  • Chiffres 0 à 9
  • Personnages ! # $% & '* + - / =? ^ _ `{| } ~
  • Personnage . (point, point, point final) à condition que ce ne soit pas le premier ou le dernier caractère et à condition qu'il n'apparaisse pas deux fois ou plus consécutivement.

De plus, les chaînes de caractères entre guillemets (c.-à-d.: "John Doe" @ example.com) sont autorisées, permettant ainsi des caractères qui seraient autrement interdits, mais ils n'apparaissent pas dans la pratique courante. La RFC 5321 avertit également qu '"un hôte qui s'attend à recevoir du courrier DEVRAIT éviter de définir des boîtes aux lettres dans lesquelles la partie locale requiert (ou utilise) la forme de chaîne de caractères".


20
2018-01-12 14:20



Prénom:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-/=?^_`{|}~.

Serveur:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.

13
2018-01-18 09:34



Vous pouvez partir de article de Wikipedia:

  • Lettres anglaises majuscules et minuscules (a-z, A-Z)
  • Chiffres 0 à 9
  • Personnages ! # $% & '* + - / =? ^ _ `{| } ~
  • Personnage . (point, point, point final) à condition que ce ne soit pas le premier ou le dernier caractère et à condition qu'il n'apparaisse pas deux fois ou plus consécutivement.

10
2018-01-12 14:20



Google fait une chose intéressante avec leurs adresses gmail.com. Les adresses gmail.com ne permettent que les lettres (a-z), les nombres et les points (qui sont ignorés).

Par exemple, pikachu@gmail.com est le même que pi.kachu@gmail.com, et les deux adresses e-mail seront envoyées à la même boîte aux lettres. PIKACHU@gmail.com est également livré à la même boîte aux lettres.

Donc, pour répondre à la question, cela dépend parfois de l’implémenteur du nombre de normes RFC qu’il souhaite suivre. Le style d'adresse gmail.com de Google est compatible avec les normes. Ils le font de cette façon pour éviter la confusion où différentes personnes prendraient des adresses e-mail similaires, par exemple.

*** gmail.com accepting rules ***
d.oy.smith@gmail.com   (accepted)
d_oy_smith@gmail.com   (bounce and account can never be created)
doysmith@gmail.com     (accepted)
D.Oy'Smith@gmail.com   (bounce and account can never be created)

Le lien wikipedia est une bonne référence sur ce que les adresses e-mail permettent généralement. http://en.wikipedia.org/wiki/Email_address


8
2018-01-18 09:34



Vérifiez pour @ et. puis envoyez un e-mail pour qu'ils vérifient. 

Je ne peux toujours pas utiliser mon adresse e-mail .name sur 20% des sites sur Internet parce que quelqu'un a foiré leur validation par e-mail, ou parce qu'elle est antérieure à la validation des nouvelles adresses.


5
2018-06-11 19:28



La réponse courte est qu'il y a 2 réponses. Il y a une norme pour ce que vous devez faire. c'est-à-dire un comportement qui est sage et qui vous évitera des ennuis. Il existe une autre norme (beaucoup plus large) pour le comportement que vous devriez accepter sans causer de problèmes. Cette dualité fonctionne pour l'envoi et l'acceptation de courrier électronique, mais a une large application dans la vie.

Pour un bon guide sur les adresses que vous créez; voir: http://www.remote.org/jochen/mail/info/chars.html

Pour filtrer les e-mails valides, transmettez simplement tout ce qui est suffisamment compréhensible pour passer à l'étape suivante. Ou commencez à lire un tas de RFCs, attention, voici des dragons.


4
2018-03-01 01:50