Les caractères autorisés dans une adresse e-mail?
Je ne suis pas de demander à propos de e-mail complète de validation.
Je veux juste savoir quels sont les caractères autorisés dans user-name
et server
parties de l'adresse e-mail. Cela peut être simplifiée à l'extrême, peut-être des adresses email peuvent prendre d'autres formes, mais je n'ai pas de soins. Je demande seulement cette forme simple: user-name@server
(par ex. [email protected]) et les caractères autorisés dans les deux parties.
- Le
+
est autorisé. Il me pousse noix lorsque des sites web ne permettent pas parce que mon e-mail a un+
en elle et donc, beaucoup de sites ne le permettrait pas. - Je seconde la
+
de la gêne. Si vous êtes à la validation des adresses e-mail, s'il vous plaît permettre la+
! - Je pense qu'il est important de donner des liens vers des spécifications que vous voulez vraiment obtenir ce droit, et c'est là que la spec est en. Si vous êtes trop paresseux pour lire et comprendre les spécifications, alors s'il vous plaît laissez la vérification de caractères autorisés dans les adresses email des personnes qui se soucient de qui stuf.
- Je viens de commencer un bounty. Il y a déjà de bonnes réponses, mais ils n'expliquent pas les caractères autorisés dans la partie serveur de l'adresse e-mail. Je vais accepter la pleine réponse à mes questions (nom d'utilisateur et le serveur parties expliqué).
- Fait.
- Peut-être aussi RFC2821 et RFC2822.
- Question précédente portant sur le même sujet: stackoverflow.com/questions/760150/. La chose triste est, même si cette question est presque 8 mois de plus que celui-ci, l'ancienne question a beaucoup plus de réponses. Presque toutes les réponses ci-dessous étaient déjà sortis de la date à laquelle ils ont été posté. Voir entrée de Wikipedia (et ne vous inquiétez pas, il est pertinent références officielles).
- En fonction de PHP
fitler_var()
la validation de cet e-mail est correcte:_.-+~^*'`{GEO}`'*^[email protected]
- Contrairement à plusieurs réponses, les espaces sont autorisés dans la partie locale d'adresses e-mail, si indiqué.
"hello world"@example.com
est valide. - Actuellement en train de mettre en place un Google Dev Console de groupe email, Google n'autorise pas la + même si l'adresse e-mail doit avoir été autorisée lorsque la personne qui a créé le compte Gmail. !!!!!
- Pour Gmail, lorsque vous créez un compte de messagerie, il ne vous permettra pas de créer des adresses contenant un signe"+". Le signe " + " ("Plus-traitant") permet à toute personne possédant une adresse Gmail pour ajouter un signe "+" suivi par une "chaîne" à la fin de leur nom d'utilisateur à créer un "autre" ("alias") adresse de messagerie à utiliser pour leur compte. Exemple: "[email protected]", "[email protected]". Un type (et probablement "Primaire") l'utilisation de ce est d'être capable de créer des alias d'adresses e-mail de votre compte qui vous permettent de baliser et de filtrer les messages entrants, théoriquement filtrée par l'expéditeur.
- Pense que le " + " vous pousse à la noix? Mon nom de famille a une apostrophe dans il. Savoir haw de nombreux sites web, je peux encore l'écrasement en entrant mon nom de famille? Beaucoup trop, mais sur le sujet, j'ai donné l'adresse e-mail Patrick.o'hara parce que presque personne ne le lui permet, la pensée, il est valide.
- Peut-être qu'ils ne veulent pas les gens facilement abuser du système en utilisant une seule adresse e-mail réelle de créer plusieurs comptes.
- L'inverse est beaucoup plus fréquent. Si un site ne peut pas être digne de confiance afin de permettre une bonne adresses e-mail, je ne leur fais pas confiance pour gérer mes informations personnelles.
Vous devez vous connecter pour publier un commentaire.
Voir RFC 5322: Format de Message Internet et, dans une moindre mesure, RFC 5321: Simple Mail Transfer Protocol.
RFC 822 couvre également les adresses e-mail, mais il traite la plupart du temps avec sa structure:
Et comme d'habitude, Wikipédia a une bonne l'article sur les adresses email:
En plus des caractères ASCII, à compter de 2012 vous pouvez utiliser internationale les caractères ci-dessus
U+007F
, UTF-8, comme décrit dans la RFC 6532 spec et expliqué sur Wikipédia. Notez qu'à partir de 2019, ces normes sont toujours marqués comme Proposé, mais sont en train de rouler lentement. Les modifications apportées à cette spécification essentiellement ajouté des caractères internationaux comme valides que des caractères alphanumériques (atexte) sans affecter le règlement sur les permis & limité de caractères spéciaux comme!#
et@:
.Pour la validation, voir À l'aide d'une expression régulière pour valider une adresse e-mail.
La
domain
partie est définie comme suit:[email protected]
n'est pas une adresse de courriel valide, mais[email protected]
est, même si les deux utilisent les mêmes caractères.john'[email protected]
est pas VALIDE, mais"john'doe"@place.com
est VALIDE.john.smith(comment)@example.com
夏明@域通联达。在线
Watch out! Il ya un tas de connaissances de la pourriture dans ce fil de discussion (les choses qui a utilisé pour être vrai et maintenant, n'est-ce pas).
Pour éviter les faux-positifs rejets réels des adresses de courriel dans le présent et l'avenir, et à partir de n'importe où dans le monde, vous devez connaître au moins le haut niveau concept de RFC 3490, "l'Internationalisation des Noms de Domaine dans les Applications (IDNA)". Je sais que les gens en NOUS et ne sont souvent pas sur, mais il est déjà dans généralisée et l'utilisation augmente rapidement à travers le monde (principalement les non-anglais dominé pièces).
L'essentiel est que vous pouvez maintenant utiliser des adresses comme mason@日本.com et wildwezyr@fahrvergnügen.net. Non, ce n'est pas encore compatible avec tout (comme beaucoup l'ont déploré ci-dessus, même les plus simples qmail-style +ident adresses sont souvent, à tort, refusé). Mais il y a un RFC, il y a une spec, c'est maintenant soutenu par l'IETF et de l'ICANN, et, plus important encore, il y a un nombre important et croissant de mises en œuvre de l'appui de cette amélioration qui sont actuellement en service.
Je n'en sais pas beaucoup au sujet de ce développement moi-même jusqu'à ce que je retourne au Japon et commencé à voir des adresses e-mail comme hei@やる.ca et Amazon Url comme ceci:
http://www.amazon.co.jp/エレクトロニクス-デジタルカメラ-ポータブルオーディオ/b/ref=topnav_storetab_e?ie=UTF8&node=3210981
Je sais que vous ne voulez pas de liens pour les specs, mais si vous comptez uniquement sur les connaissances désuètes de pirates sur les forums Internet, votre e-mail validateur finira par rejeter les adresses de courriel que les non-Anglais des utilisateurs de plus en plus appelés à travailler. Pour les utilisateurs, cette validation sera tout aussi ennuyeux que la banalité de mort cérébrale forme que nous détestons tous, celui qui ne peut pas gérer un + ou un nom de domaine ou quoi que ce soit.
Donc, je ne dis pas que ce n'est pas une corvée, mais la liste complète des caractères "permis sous certaines/tout/none conditions" est (presque) tous les caractères de toutes les langues. Si vous voulez "accepter toutes les adresses e-mail valides (et de nombreux invalides trop)", alors vous avez à prendre d'IDN en compte, ce qui rend fondamentalement un caractère approche fondée sur inutile (désolé), sauf si vous convertir l'internationalisation des adresses e-mail à Punycode.
Après avoir fait cela, vous pouvez suivre (de la plupart) des conseils ci-dessus.
Le format de l'adresse e-mail est:
local-part@domain-part
(max. 64@255 caractères, pas plus de 256 au total).La
local-part
etdomain-part
pourrait avoir différents jeu 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:
abcdefghijklmnopqrstuvwxyz
,ABCDEFGHIJKLMNOPQRSTUVWXYZ
,0123456789
,!#$%&'*+-/=?^_`{|}~
,.
(pas le premier ou le dernier caractère répété ou moins cité),"(),:;<>@[\]
(avec certaines restrictions),()
(sont admis à l'intérieur des parenthèses, par exemple(comment)[email protected]
).Nom de domaine:
abcdefghijklmnopqrstuvwxyz
,ABCDEFGHIJKLMNOPQRSTUVWXYZ
,0123456789
,-
(pas le premier ou le dernier caractère),jsmith@[192.168.2.1]
oujsmith@[IPv6:2001:db8::1]
.Ces adresses e-mail sont valides:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
(à une lettre partie locale)"much.more unusual"@example.com
"[email protected]"@example.com
"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
[email protected]
admin@mailserver1
(nom de domaine local avec pas de domaine de premier niveau)#!$%&'*+-/=?^_`{}|[email protected]
"()<>[]:,;@\\"!#$%&'-/=?^_`{}| ~.a"@example.org
" "@example.org
(espace entre les guillemets)example@localhost
(envoyé à partir de localhost)[email protected]
(voir la Liste des Internet des domaines de premier niveau)user@com
user@localserver
user@[IPv6:2001:db8::1]
Et ces exemples ne sont pas valides:
Abc.example.com
(pas de@
caractère)A@b@[email protected]
(un seul@
est autorisé à l'extérieur des guillemets)a"b(c)d,e:f;gi[j\k][email protected]
(aucun des caractères spéciaux dans cette partie sont autorisés à l'extérieur des guillemets)just"not"[email protected]
(cité des chaînes doit être dot séparées ou le seul élément qui composent la partie locale)this is"not\[email protected]
(des espaces, des citations, et les barres obliques inverses ne peut exister que lorsque dans les chaînes entre guillemets et précédé d'une barre oblique inverse)this\ still\"not\[email protected]
(même si échappés (précédé d'une barre oblique inverse), des espaces, des citations, et les barres obliques inverses doivent toujours être contenue par des guillemets)[email protected]
(double point avant@
); (avec mise en garde: Gmail permet de ce travers)[email protected]
(double point après@
)Source: Adresse Email à Wikipédia
Perl RFC2822 regex pour la validation des e-mails:
Voir aussi: RFC 822 Adresse Email Parser en PHP.
Les définitions officielles des adresses e-mail sont:
Connexes:
[email protected]
et l'appeler un jour.Wikipédia a un bon article sur ce, et l'officiel de la spec est ici. De Wikipdia:
De Google de faire une chose intéressante avec leurs gmail.com les adresses.
gmail.com adresses uniquement des lettres (a-z), des chiffres, et des périodes(qui sont ignorés).
par exemple, [email protected] est le même que [email protected] et les deux adresses e-mail sera envoyé à la même boîte aux lettres. [email protected] est également livré à la même boîte aux lettres.
Donc pour répondre à la question, parfois, il dépend de l'opérateur sur la façon dont beaucoup de la RFC normes à suivre. Google gmail.com adresse style est compatible avec les normes. Ils le font de cette façon pour éviter la confusion où différentes personnes prendrait similaires adresses e-mail par exemple,
Le lien wikipédia est une bonne référence sur ce que les adresses e-mail permettent en général.
http://en.wikipedia.org/wiki/Email_address
{john'doe}@my.server
sans problème. Testé avec hMail serveur aussi.{piotr'kula}@kula.solutions
- Si cela fonctionne, vous obtiendrez une belle réponse automatique la forme. Sinon rien ne se passe.Vous pouvez commencer à partir de article de wikipedia:
Nom:
Serveur:
<>
et[]
? E. g."()<>[]:,;@\\\"!#$%&'-/=?^_
{}| ~.un"@example.org`?Vérifier @ et . et ensuite envoyer un email pour vérifier.
Je ne peux toujours pas utiliser mon .nom adresse de courriel sur 20% des sites sur l'internet parce que quelqu'un a foiré leur e-mail de validation, ou parce qu'il est antérieur à la nouvelle adresse valide.
La réponse courte est qu'il y a 2 réponses. Il y a une norme pour ce que vous devriez faire. ie comportement qui est sage et de vous garder hors de l'ennui. Il y a un autre (beaucoup plus large) standard pour le comportement, vous devez accepter sans problème. Cette dualité fonctionne pour l'envoi et acceptation de courrier électronique, mais a une large application dans la vie.
Pour un bon guide pour les adresses que vous créez; voir: http://www.remote.org/jochen/mail/info/chars.html
Pour filtrer les e-mails valides, il suffit de passer sur quelque chose de compréhensible assez pour voir une prochaine étape.
Ou commencez à lire un tas de Rfc, attention, ici il y a des dragons.
Une bonne lecture sur le question.
Extrait:
Accepté la réponse fait référence à un article de Wikipédia lors de la discussion de la validité de locaux-partie d'une adresse e-mail, mais Wikipédia n'est pas une autorité sur ce.
IETF RFC 3696 est une autorité sur cette question, et doivent être consultés à la section 3. Restrictions sur les adresses email à la page 5:
Comme d'autres l'ont fait, je vous soumets une regex qui fonctionne pour PHP et JavaScript pour valider les adresses e-mail:
Que l'on trouve dans ce lien Wikipédia
La réponse est (presque)
ALL
(ASCII 7 bits).Si les règles d'inclusion est "...permis sous certaines/tout/none conditions..."
Juste en regardant l'une des nombreuses règles d'inclusion pour les permis de texte dans le "domaine de texte" dans le cadre RFC 5322 en haut de la page 17, nous trouvons:
les trois seuls caractères manquants dans cette description sont utilisés dans le domaine littéral
[]
, pour former une cité-paire\
, et le caractère espace blanc(%d32). Avec l'ensemble de la gamme 32-126 (décimal) est utilisé. Une condition similaire, apparaissent comme des "qtext" et "ctext". Nombre de caractères de contrôle sont également autorisés/utilisé. Une liste de ces caractères de contrôle apparaît dans la page 31 la section 4.1 de la norme RFC 5322 comme obs-PAS-WS-CTL.
Tout cela caractères de contrôle sont autorisées comme indiqué au début de la section 3.5:
Et une règle d'inclusion est donc "trop large". Ou, en d'autres sens, l'espérance de la règle est "trop simpliste".
Pour des raisons de simplicité, j'ai désinfecter la soumission par la suppression de tout le texte à l'intérieur des guillemets, et ceux associés entourant de guillemets doubles avant la validation, de mettre le holà sur l'adresse email de présentations basées sur ce qui est rejetée. Juste parce que quelqu'un peut avoir le Jean.."L'*$hizzle*Bizzle"[email protected] l'adresse ne veut pas dire que je permettre à mon système. Nous vivons dans le futur où il prend peut-être moins de temps pour obtenir une adresse de messagerie que pour faire un bon travail d'essuyer les fesses. Et il n'est pas comme si l'e-mail critères ne sont pas plafonnés à droite à côté de l'entrée de dire ce qui est et n'est pas autorisé.
J'ai aussi désinfecter ce qui est spécifiquement non permis par les différentes Rfc après le document cité est supprimé. La liste des caractères non autorisés et les modèles semble être une liste beaucoup plus courte pour tester.
Interdits:
Dans l'exemple donné:
Confirmer l'envoi d'un message par courriel à l'restes suite à une tentative d'ajouter ou de modifier l'adresse e-mail est un bon moyen de voir si votre code peut gérer l'adresse de courriel soumise. Si l'email est valide après de nombreux cycles de nettoyage nécessaires, puis d'incendie à la confirmation. Si une demande de retour à partir du lien de confirmation, puis l'e-mail peuvent être déplacés de la holding||temporaire||purgatoire de statut ou de stockage pour devenir un véritable, bonafide de première classe stockées e-mail.
Une notification de changement d'adresse email de l'échec ou de la réussite peuvent être envoyés à l'ancienne adresse e-mail si vous souhaitez être attentif. Non confirmés paramétrages de compte pourrait tomber du système en échec les tentatives entièrement après un laps de temps raisonnable.
Je ne le fais pas stinkhole mails sur mon système, peut-être que c'est juste de jeter de l'argent. Mais, 99,9% du temps, les gens il suffit de faire la bonne chose et d'avoir une adresse email qui n'a pas le pousser de la conformité des limites à bord en utilisant des cas limites de la compatibilité des scénarios. Soyez prudent de regex DDoS, c'est un endroit où vous pouvez avoir des ennuis. Et c'est la troisième chose que je fais, j'ai mis une limite sur combien de temps je suis prêt à traiter un e-mail. Si elle a besoin de ralentir ma machine pour être validé, il n'est pas d'avoir passé l'entrant les données de l'API de point de terminaison de la logique.
Edit: Cette réponse continué à se faire sonné pour être "mauvais", et peut-être qu'il le méritait. Peut-être que c'est toujours mauvais, peut-être pas.
Dans mon PHP j'utilise cette case
essayer vous-même http://phpfiddle.org/main/code/9av6-d10r
J'ai créé cette expression selon la RFC lignes directrices:
Gmail ne permettent signe + comme caractère spécial et, dans certains cas, (.) mais tous les autres caractères spéciaux ne sont pas autorisés à Gmail. La RFC est dit que vous pouvez utiliser des caractères spéciaux, mais vous devriez éviter d'envoyer le courriel de Gmail avec des caractères spéciaux.