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 ankaŭ la mankon de plenumo de aliaj solvoj kun la RFC. Mi tamen rimarkis, ke eĉ ĉi tiu regex estas maltipa kaj ne la normo. Mi memoras, ke legi la realan reĝimon (permesi <,>, ktp) estas tro intensa por plej multaj procezoj.

    Tamen ĝi estas verkita koncize kaj definitive 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 malĝusta RFC (2821 anstataŭ 2822) sed tio estas korektita. La angulaj krampoj ne povas esti parto de la lokaj aŭ domajnaj partoj de retpoŝta adreso; prefere ili reprezentas tokenigajn punktojn, do ili povas esti uzataj por ĉirkaŭi retpoŝtan adreson (ekzemple en via poŝta legilo) ĝuste ĉar ili ne povas esti parto de la adreso.

    Unu afero, kiun mia funkcio ne plenumas, estas zorgi pri la citita formo de retpoŝtadresoj - kie la loka parto aperas inter duoblaj citiloj - ĉar RFC2821 esence diras, ke neniu devas iam skribi sian adreson tiel. (Mi kredas ke la formo estas por malantaŭa kongruo 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 pri adresaj longoj devas normale esti konsiderata kiel 256.

    - Fonto: RFC 3696 Errata

    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) kiel signifante ke domajnaj nomoj povas esti 255 signoj longaj. Sed RFC2181 parolas pri DNS-protokola-nivela reprezento sur la drato, ne preseblaj signoj.

    La maksimuma longo de domajna nomo estas 253 signoj (254 inkluzive de posta punkto, 255 oktetoj sur la drato kun fina nul). 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.