Gyldig længde på e-mail-adresse

Depositphotos1948865 s

Jeg var nødt til at grave lidt i dag for at finde det, men vidste du hvad den gyldige længde på en e-mail-adresse er? Det er faktisk opdelt i dele ... Navn@Domain.com. Dette er i henhold til RFC2822.

  1. Navnet kan bestå af 1 til 64 tegn.
  2. Domæne kan bestå af 1 til 255 tegn.

Wow ... det betyder, at dette kan være en gyldig e-mail-adresse:


loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratca Phasellusatin
ciduntaturpisaduis.com

Prøv at montere det på et visitkort! Ironisk nok er de fleste e-mail-adressefelter begrænset til 100 tegn på internettet. Det er faktisk ikke gyldigt. Hvis du vil validere en e-mail-adresse til korrekt konstruktion ved hjælp af PHP, fandt jeg dette uddrag på nettet:

http://derrick.pallas.us/email-validator/ # Licens: Akademisk gratis licens 2.1 # Version: 2006-12-01a hvis (! 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)) returner false; liste ($ local, $ domain) = split ("@", $ email, 2); hvis (strlen ($ local)> 64 || strlen ($ domain)> 255) returnerer false; hvis ($ check &&! gethostbynamel ($ domain)) returnerer false; returner sandt; # SLUT ######}

9 Kommentarer

  1. 1
  2. 2

    Ja, jeg bemærkede også manglen på overholdelse af andre løsninger med RFC. Jeg har dog bemærket, at selv denne regex er atypisk og ikke standarden. Jeg kan huske at læse den faktiske regex (at tillade <,> osv.) Er for intensiv til de fleste processer.

    Det er dog skrevet kortfattet og bestemt en løsning, der burde være acceptabel for enhver virksomheds e-mail-applikation.

    Tak igen!
    Doug

  3. 3

    Desværre linkede jeg siden til den forkerte RFC (2821 i stedet for 2822), men det er blevet rettet. Vinkelparenteserne kan ikke være en del af de lokale eller domæne dele af en e-mail-adresse; snarere repræsenterer de tokeniseringspunkter, dvs. de kan bruges til at omgive en e-mail-adresse (for eksempel i din mail-læser) netop fordi de ikke kan være en del af adressen.

    En ting, som min funktion ikke gør, er at bekymre sig om den citerede form for e-mail-adresser - hvor den lokale del vises i dobbelt anførselstegn - fordi RFC2821 i det væsentlige siger, at ingen nogensinde skulle skulle skrive deres adresse på den måde. (Jeg tror, ​​at formularen er for bagudkompatibilitet og nu er dårlig praksis.)

  4. 4
  5. 5

    Der er en begrænsning i RFC 2821 for længden af ​​en adresse i MAIL- og RCPT-kommandoer på 256 tegn. Den øvre grænse for adresselængder skal normalt betragtes som 256.

    - Kilde: RFC 3696 Errata

    Også fordi RFC 2181 siger “Et fuldt domænenavn er begrænset til 255 oktetter”, fortolkes det gentagne gange fejlagtigt af folk (inklusive forfattere af andre RFC'er), så det betyder, at domænenavne kan være 255 tegn lange. Men RFC2181 taler om repræsentation af DNS-protokolniveau på ledningen, ikke tegn, der kan udskrives.

    Den maksimale længde af et domænenavn er 253 tegn (254 inklusive efterfølgende prik, 255 oktetter på ledningen med afsluttende nul). Og det er hvad BIND og DiG implementerer.

  6. 6
  7. 7
  8. 8

Hvad mener du?

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.