Geçerli E-posta Adresi Uzunluğu

1948865 s

Bugün onu bulmak için biraz araştırma yapmak zorunda kaldım, ancak bir e-posta adresinin geçerli uzunluğunun ne olduğunu biliyor muydunuz? Aslında parçalara ayrılmış ... Ad@Etki Alanı.com. Bu göre RFC2822.

  1. Ad, 1 ila 64 karakter arasında olabilir.
  2. Etki alanı 1 ila 255 karakter arasında olabilir.

Vay be… bu, bunun geçerli bir e-posta adresi olabileceği anlamına gelir:


loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tümarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Bunu bir kartvizite takmayı deneyin! İronik olarak, çoğu e-posta adresi alanı web'deki 100 karakterle sınırlıdır. Bu aslında geçerli değil. PHP'yi kullanarak düzgün bir şekilde inşa etmek için bir e-posta adresini doğrulamak isterseniz, bu pasajı internette buldum:

http://derrick.pallas.us/email-validator/ # Lisans: Akademik Ücretsiz Lisans 2.1 # Sürüm: 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)) false döndür; liste ($ yerel, $ alan) = bölme ("@", $ e-posta, 2); eğer (strlen ($ yerel)> 64 || strlen ($ alan)> 255) false döndürür; eğer ($ check &&! gethostbynamel ($ alan)) yanlış döndürür; doğruya dön; # SON ###### }

9 Yorumlar

  1. 1
  2. 2

    Evet, diğer çözümlerin de RFC ile uyumlu olmadığını fark ettim. Yine de, bu normal ifadenin bile standart değil atipik olduğunu fark ettim. Gerçek regex'i okuduğumu hatırlıyorum (<,>, , vb. izinler) çoğu işlem için çok yoğun.

    Ancak, kısa ve öz bir şekilde yazılmıştır ve kesinlikle herhangi bir kurumsal e-posta uygulaması için kabul edilebilir olması gereken bir çözümdür.

    Tekrar teşekkürler!
    Doug

  3. 3

    Ne yazık ki, o sayfayı yanlış RFC'ye bağladım (2821 yerine 2822), ancak bu düzeltildi. Köşeli parantezler, bir e-posta adresinin yerel veya etki alanı bölümlerinin parçası olamaz; bunun yerine, belirteç noktalarını temsil ederler, yani bir e-posta adresini çevrelemek için kullanılabilirler (örneğin posta okuyucunuzda), çünkü tam olarak adresin parçası olamazlar.

    İşlevimin yapmadığı bir şey, yerel kısmın çift tırnak içinde göründüğü alıntılanan e-posta adresleri biçimi hakkında endişelenmek çünkü RFC2821, esasen hiç kimsenin adresini bu şekilde yazmak zorunda kalmaması gerektiğini söylüyor. (Formun geriye dönük uyumluluk için olduğuna ve şimdi kötü bir uygulama olduğuna inanıyorum.)

  4. 4

    Aslında RFC2821, e-posta adresi uzunluğu için doğru referanstır. Orada buldum ama RFC 2822'de değil.

  5. 5

    RFC 2821'de MAIL ve RCPT komutlarında 256 karakterlik bir adresin uzunluğu konusunda bir kısıtlama vardır. Adres uzunluklarındaki üst sınır normalde 256 olarak kabul edilmelidir.

    — Kaynak: RFC 3696 Hata

    Ayrıca, RFC 2181 "Tam alan adı 255 sekizli ile sınırlıdır" dediği için, insanlar (diğer RFC'lerin yazarları dahil) tarafından alan adlarının 255 karakter uzunluğunda olabileceği şeklinde tekrar tekrar yanlış yorumlanır. Ancak RFC2181, yazdırılabilir karakterlerden değil, kablo üzerinde DNS protokolü düzeyinde temsilden bahsediyor.

    Bir alan adının maksimum uzunluğu 253 karakterdir (sondaki nokta dahil 254, kablo üzerinde boş sonlandırma ile 255 sekizli). Ve BIND ve DiG'nin uyguladığı şey budur.

  6. 6
  7. 7
  8. 8

Ne düşünüyorsunuz?

Bu site spam'i azaltmak için Akismet'i kullanıyor. Yorum verilerinizin nasıl işlendiğini öğrenin.