Musel jsem dnes něco kopat, abych to našel, ale věděli jste, jaká je platná délka e-mailové adresy? Je to vlastně rozbité na části ... Jméno@Doména.com. To je podle RFC2822.
- Název může mít 1 až 64 znaků.
- Doména může mít 1 až 255 znaků.
Páni ... to znamená, že by to mohla být platná e-mailová adresa:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com
Zkuste to namontovat na vizitku! Je ironií, že většina polí e-mailových adres má na webu omezeno na 100 znaků. To ve skutečnosti není platné. Pokud chcete ověřit e-mailovou adresu pro správnou konstrukci využívající PHP, našel jsem tento úryvek na síti:
http://derrick.pallas.us/email-validator/ # Licence: Academic Free License 2.1 # Verze: 2006-12-01a if (! ereg (''. '^'. '[-! # $% & \ '* + / 0-9 =? AZ ^ _a-z {|} ~]'. '(\\.? [-! # $% & \' * + / 0-9 =? AZ ^ _a-z { |} ~]) * '.' @ '.' [a-zA-Z] (-? [a-zA-Z0-9]) * '.' (\\. [a-zA-Z] (- ? [a-zA-Z0-9]) *) + '.' $ ', $ email)) vrátit false; list ($ local, $ domain) = split ("@", $ email, 2); if (strlen ($ local)> 64 || strlen ($ domain)> 255) return false; if ($ check &&! gethostbynamel ($ domain)) return false; návrat true; # KONEC ###### }
Jsem rád, že to někdo považoval za užitečné! Hledání výrazu „email regexp“ na Googlu odhalí spoustu regulárních výrazů, které se nesynchronizují s RFC.
Ano, všiml jsem si také nesouladu jiných řešení s RFC. Všiml jsem si však, že i tento regex je atypický a není standardní. Pamatuji si, že čtení skutečného regulárního výrazu (umožňující <,> atd.) Je pro většinu procesů příliš intenzivní.
Je však napsáno stručně a rozhodně řešení, které by mělo být přijatelné pro jakoukoli podnikovou e-mailovou aplikaci.
Ještě jednou děkuji!
Doug
Bohužel jsem tuto stránku propojil se špatným RFC (2821 místo 2822), ale to bylo opraveno. Úhlové závorky nemohou být součástí místní nebo doménové části e-mailové adresy; spíše představují tokenizační body, tj. mohou být použity k obklopení e-mailové adresy (například ve vaší čtečce pošty) právě proto, že nemohou být součástí adresy.
Jedna věc, kterou moje funkce nedělá, je starat se o citovanou formu e-mailových adres - kde se místní část zobrazuje v uvozovkách - protože RFC2821 v podstatě říká, že nikdo by nikdy nemusel psát svou adresu tímto způsobem. (Věřím, že formulář slouží zpětné kompatibilitě a nyní je špatnou praxí.)
Ve skutečnosti RFC2821 JE správný odkaz na délku e-mailové adresy. Našel jsem to tam, ale ne v RFC 2822.
V RFC 2821 existuje omezení délky adresy v příkazech MAIL a RCPT o délce 256 znaků. Horní limit délek adres by měl být normálně považován za 256.
- Zdroj: RFC 3696 Errata
Protože RFC 2181 říká „Celý název domény je omezen na 255 oktetů“, lidé (včetně autorů jiných RFC) jej opakovaně nesprávně interpretují, což znamená, že názvy domén mohou mít délku 255 znaků. Ale RFC2181 hovoří o reprezentaci na úrovni protokolu DNS na drátě, ne o tisknutelných znacích.
Maximální délka názvu domény je 253 znaků (254 včetně koncové tečky, 255 oktetů na drátu s koncovou hodnotou null). A to implementují BIND a DiG.
Vývojáři, kteří podceňují potenciální velikosti e-mailových adres, způsobili několik problémů: http://www.eph.co.uk/resources/email-address-le...
Myslím, že pokud je vaše e-mailová adresa něco maličkého jako „jack1983@aol.com“, můžete si myslet, že i 30 znaků je velkorysých.
Je nám líto, výše uvedená adresa URL je poškozená…
Vývojáři, kteří podceňují potenciální velikosti e-mailových adres, způsobili několik problémů:
http://www.eph.co.uk/resources/email-address-leng...
Myslím, že pokud je vaše e-mailová adresa něco maličkého jako „jack1983@aol.com“, můžete si myslet, že i 30 znaků je velkorysých.
Právě jsem našel tento příspěvek ... veselý. Zajímalo by mě, jestli můžu zaregistrovat tu doménu lol.