Valida Retpoŝta Adreso Longa

Depositphotos 1948865 s

Mi devis iom fosi hodiaŭ por trovi ĝin, sed ĉu vi sciis, kio estas la valida longo de retpoŝta adreso? Ĝi efektive rompiĝas en partojn ... Nomo@Domajno.com. Ĉi tio estas laŭ RFC2822.

  1. Nomo povas havi 1 ĝis 64 signojn.
  2. Domajno povas havi 1 ĝis 255 signojn.

Ve ... tio signifas, ke ĉi tio povus esti valida retpoŝta adreso:


loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Provu enmeti tion sur vizitkarton! Ironie, plej multaj retpoŝtadresaj kampoj estas limigitaj al 100 signoj en la retejo. Tio fakte ne validas. Se vi ŝatus validigi retpoŝtadreson por taŭga konstruo uzante PHP, mi trovis ĉi tiun fragmenton en la reto:

http://derrick.pallas.us/email-validator/ # Permesilo: Akademia Libera Permesilo 2.1 # Versio: 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]) *) + '.' $ ', $ retpoŝto)) redonu falsa; listo ($ loka, $ domajno) = disigo ("@", $ retpoŝto, 2); if (strlen ($ loka)> 64 || strlen ($ domajno)> 255) redonas falsa; se ($ kontrolu &&! gethostbynamel ($ domajno)) redonu falsa; reveni vera; # FINO ###### }

9 Komentoj

  1. 1
  2. 2

    Jes, mi rimarkis la mankon de konformeco de aliaj solvoj ankaŭ kun la RFC. Mi tamen rimarkis, ke eĉ ĉi tiu regex estas maltipa kaj ne la normo. Mi memoras, ke legi la realan regex (permesante <,>, ktp) estas tro intensa por plej multaj procezoj.

    Tamen, ĝi estas skribita koncize kaj certe solvo, kiu devus esti akceptebla por iu ajn entreprena retpoŝta aplikaĵo.

    Redankon!
    Doug

  3. 3

    Bedaŭrinde, mi ligis tiun paĝon al la malĝusta RFC (2821 anstataŭ 2822) sed tio estas korektita. La angulaj krampoj ne povas esti parto de la lokaj aŭ domajnaj partoj de retadreso; prefere ili reprezentas tokenigajn punktojn, t.e. ili povas esti uzataj por ĉirkaŭi retpoŝtadreson (ekzemple en via retleganto) ĝuste ĉar ili ne povas esti parto de la adreso.

    Unu afero, kiun mia funkcio ne faras, estas zorgi pri la citita formo de retadresoj — kie la loka parto aperas inter citiloj — ĉar RFC2821 esence diras, ke neniu iam devas skribi sian adreson tiel. (Mi kredas, ke la formo estas por retrokongruo kaj nun estas malbona praktiko.)

  4. 4
  5. 5

    Estas limigo en RFC 2821 pri la longo de adreso en MAIL kaj RCPT komandoj de 256 signoj. La supra limo por adreslongoj normale devus esti konsiderata kiel 256.

    — Fonto: RFC 3696 Errato

    Ankaŭ, ĉar RFC 2181 diras "Plena domajna nomo estas limigita al 255 oktetoj", ĝi estas plurfoje misinterpretita de homoj (inkluzive de la verkistoj de aliaj RFC-oj) kiel signifante ke domajnaj nomoj povas esti 255 signoj longaj. Sed RFC2181 parolas pri DNS-protokolo-nivela reprezento sur la drato, ne pri printeblaj signoj.

    La maksimuma longo de domajna nomo estas 253 signoj (254 inkluzive de posta punkto, 255 oktetoj sur la drato kun finiĝanta nulo). Kaj tion efektivigas BIND kaj DiG.

  6. 6
  7. 7
  8. 8

Kion vi pensas?

Ĉi tiu retejo uzas Akismeton por redukti spamon. Lernu, kiel via komento datiĝas.