ID e-mail avec tiret à la fin de la partie locale


19

Est-ce un email valide si l'email a un tiret (-) à la fin de la partie locale d'un email? Par exemple,

an.unusual.email-@mydomain.com

Ou pour généraliser, l'un de ces caractères ( Characters !#$%&'*+-/=?^_``{|}~ (ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)), qui sont valides pour être dans la partie locale de l'e-mail au début et / ou à la fin de l'identifiant de l'e-mail, peut-il être utilisé?

Google dit qu'il n'est pas valide, donc pour le moment je le suppose aussi invalide, bien que RFC exclut uniquement le caractère [point] du début et / ou de la fin de la partie locale.

Erreur GMail pour le cas ci-dessus

Remarque: Je ne suis pas préoccupé par la partie domaine, car cela devient plus impliqué en raison de la manière DNS, ce qui complique la question et les réponses.

https://social.technet.microsoft.com/Forums/ie/en-US/69f393aa-d555-4f8f-bb16-c636a129fc25/what-are-valid-and-invalid-email-address-characters


Bonne question. Avez-vous consulté ce fil de questions et réponses Stack Overflow ? Beaucoup d'informations - en grande partie obsolètes à ce stade - mais toujours un bon point de départ /
JakeGould

bon lien de référence, il semble que google considère cet e-mail comme non valide, tandis que Microsoft n'a aucun problème.
Jimson Kannanthara James

1
Partager cela depuis que vous avez créé Google: Gmail ignore toutes les périodes dans une adresse e-mail, donc si votre e-mail était "anunusualemail@gmail.com", vous recevrez également un courrier envoyé à "an.unusual.email@gmail.com". Il ignore également les points positifs à la fin de l'adresse e-mail: "anunusualemail+something@gmail.com".
mowwwalker

1
Sur mon propre service de messagerie, je peux interdire la lettre "u" des noms d'utilisateur. Juste parce que.
Agent_L

Réponses:


60

Est-ce un email valide si l'email a un tiret (-) à la fin de la partie locale d'un email? [...] Google dit que c'est invalide, donc pour le moment je le suppose aussi invalide, bien que RFC n'exclue que le caractère [dot] de commencer et / ou de terminer la partie locale.

C'est valable. Vous ne le voyez que rejeté par Google, car il effectue une vérification complètement différente - ils ont leurs propres politiques sur ce que la partie locale peut être, comme le font de nombreux autres fournisseurs.


Google, ou toute autre personne, ne serait obligé d'accepter toutes les adresses e-mail éventuellement valides que si le formulaire demandait réellement une adresse e-mail valide et existante (éventuellement auprès d'un fournisseur). Par exemple, ce serait une erreur si le champ À: / Cc: de Gmail rejetait une adresse valide.

Mais le champ que vous avez mis en évidence ne vous demande pas une adresse e-mail existante; il demande un nom de compte sur les systèmes Google, qui sera la base d'une adresse e-mail uniquement une fois le compte créé. Rien n'interdit à Google ou à quiconque de limiter l'ensemble des noms de compte valides (ou, vraiment, même les noms de boîte aux lettres) sur leur propre système .

Ou, en d'autres termes, la définition des caractères autorisés pour `` partie locale '' signifie uniquement que les serveurs SMTP des applications de messagerie doivent accepter ces adresses dans les en-têtes RFC 822 et les commandes SMTP - mais cela ne dit rien sur la possibilité de créer de telles boîtes aux lettres. (En effet, à l'époque où les premiers RFC par e-mail ont été écrits et la plupart des boîtes aux lettres étaient encore liées à des comptes au niveau du système d'exploitation, leurs noms avaient des limites similaires, voire plus strictes.)

Par exemple, cette partie de la RFC 5321 (section 4.1.2, ci-dessous ABNF) dit explicitement qu'un hôte récepteur est autorisé à et devrait en effet avoir des limites beaucoup plus strictes sur la façon dont ses propres boîtes aux lettres sont nommées:

Bien que la définition ci-dessus pour la partie locale soit relativement permissive, pour une interopérabilité maximale, un hôte qui s'attend à recevoir du courrier DEVRAIT éviter de définir des boîtes aux lettres où la partie locale requiert (ou utilise) le formulaire de chaîne entre guillemets ou où la partie locale est utilisée. -sensible.

Ainsi, bien que anunusualemail-@gmail.com est syntaxiquement valide, que seule ne veut pas dire que Google doit vous permettre de créer.


6
Comme note latérale intéressante, Google ignore les périodes dans les adresses e-mail ( gmail.googleblog.com/2008/03/… ), qui n'est pas non plus spécifié dans le RFC. Ainsi, myname@gmail.com va au même endroit que my.name@gmail.com ou myname@gmail.com.
childofsoong

4
@JimsonKannantharaJames En général, si vous voulez vérifier si un e-mail est valide, vous devez réellement envoyer un e-mail à cette adresse et forcer l'utilisateur à agir. Toutes les vérifications basées uniquement sur la syntaxe de l'adresse devraient vraiment être simplement pour attraper l'utilisateur faisant des fautes de frappe.
Michael Mior

1
@grawity Oh je sais - je commentais pour donner un exemple d'une autre chose qui n'est pas spécifiée dans le RFC mais qui est autorisée.
childofsoong

1
@ user71659 Si vous n'échappez pas correctement les caractères de contrôle lorsque cela est nécessaire, vous avez un problème plus important. En fin de compte, l'e-mail a été saisi par l'utilisateur et la saisie de l'utilisateur doit toujours être considérée comme dangereuse. En supposant que certains champs de votre base de données sont sûrs car certaines règles de validation peuvent être assez dangereuses. Que se passe-t-il lorsque quelques mois plus tard, quelqu'un d'autre remplit ce champ à partir d'un autre formulaire qui n'a pas la même validation?
Michael Mior

2
@ user71659 vous confondez deux problèmes différents et brouillez l'argument. MichaelMior a parfaitement raison de dire que pour vérifier qu'une adresse e-mail existe , vous devrez envoyer un e-mail à cette adresse qui nécessite une action de l'utilisateur.
kumarharsh

7

G Suite (officiellement Google Apps pour votre domaine) autorise les tirets (tirets) dans les adresses e-mail, même en tant que dernier caractère.

Les noms d'utilisateur peuvent contenir des lettres (az), des chiffres (0-9), des tirets (-), des traits de soulignement (_), des apostrophes (') et des points (.).

Source: directives relatives au nom et au mot de passe

Comme vous l'avez noté, Gmail n'autorise pas les tirets dans les adresses e-mail.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.