Bir e-posta adresinde hangi karakterlere izin verilir?

Tam e-posta doğrulaması hakkında soru sormuyorum.

Sadece e-posta adresinin kullanıcı adı ve sunucu bölümlerinde izin verilen karakterlerin neler olduğunu bilmek istiyorum. Bu aşırı basitleştirilmiş olabilir, belki e-posta adresleri başka şekillerde olabilir, ama umurumda değil. Ben sadece bu basit formu soruyorum: kullanıcı-adı@sunucu` (örneğin wild.wezyr@best-server-ever.com) ve her iki bölümde de izin verilen karakterler.

Çözüm

Bakınız RFC 5322: İnternet Mesaj Formatı ve daha az ölçüde RFC 5321: Basit Posta Aktarım Protokolü.

RFC 822 de e-posta adreslerini kapsar, ancak çoğunlukla yapısıyla ilgilenir:

 addr-spec   =  local-part "@" domain        ; global address     
 local-part  =  word *("." word)             ; uninterpreted
                                             ; case-preserved

 domain      =  sub-domain *("." sub-domain)     
 sub-domain  =  domain-ref / domain-literal     
 domain-ref  =  atom                         ; symbolic reference

Ve her zamanki gibi, Wikipedia'da iyi bir e-posta adresleri makalesi var:

E-posta adresinin yerel kısmı bu ASCII karakterlerinden herhangi birini kullanabilir:

Büyük ve küçük Latin harfleri A ila Z ve a ila z;

  • 0 ile 9 arasındaki rakamlar;
  • özel karakterler !#$%&'*+-/=?^_`{|}~;
  • nokta ., tırnak içine alınmadığı sürece ilk veya son karakter olmaması ve ayrıca tırnak içine alınmadığı sürece ardışık olarak görünmemesi koşuluyla (örneğin John..Doe@example.com izin verilmez, ancak "John..Doe"@example.com izin verilir);
  • boşluk ve "(),:;@[\] karakterlerine kısıtlamalarla izin verilir (yalnızca aşağıdaki paragrafta açıklandığı gibi tırnak içine alınmış bir dizenin içinde izin verilir ve ayrıca, ters eğik çizgi veya çift tırnaktan önce ters eğik çizgi gelmelidir);
  • yorumlara yerel bölümün her iki ucunda parantez ile izin verilir; örneğin john.smith(comment)@example.com ve (comment)john.smith@example.com her ikisi de john.smith@example.com ile eşdeğerdir.

ASCII karakterlerine ek olarak, 2012 itibariyle RFC 6532 spec'de açıklandığı ve Wikipedia'de açıklandığı gibi UTF-8 olarak kodlanmış uluslararası yukarıdaki karakterleri U+007F kullanabilirsiniz. 2019 itibariyle, bu standartların hala Önerilen olarak işaretlendiğini, ancak yavaş yavaş kullanıma sunulduğunu unutmayın. Bu spesifikasyondaki değişiklikler, izin verilen & !# ve @: gibi kısıtlı özel karakterlerle ilgili kuralları etkilemeden, esasen uluslararası karakterleri geçerli alfanümerik karakterler (atext) olarak eklemiştir.

Doğrulama için Bir e-posta adresini doğrulamak için düzenli ifade kullanma bölümüne bakın.

Alan' kısmı [aşağıdaki gibi] tanımlanmıştır6:

Protokoller için İnternet standartları (Yorum İsteği), bileşen ana bilgisayar adı etiketlerinin yalnızca a ile z arasındaki ASCII harflerini (büyük/küçük harfe duyarlı olmayan bir şekilde), 0 ile 9 arasındaki rakamları ve kısa çizgiyi (-) içermesini zorunlu kılar. RFC 952]7'deki ana bilgisayar adlarının orijinal belirtimi, etiketlerin bir rakamla veya kısa çizgiyle başlayamayacağını ve kısa çizgiyle bitmemesi gerektiğini zorunlu kılmıştır. Ancak, sonraki bir belirtim (RFC 1123) ana bilgisayar adı etiketlerinin rakamlarla başlamasına izin vermiştir. Başka hiçbir sembole, noktalama karakterine veya boşluğa izin verilmez.

Yorumlar (18)

Wikipedia'da bu konuda iyi bir makale var ve resmi spesifikasyon burada. Wikipdia'dan:

E-posta adresinin yerel kısmı bu ASCII karakterlerinden herhangi birini kullanabilir:

  • Büyük ve küçük İngilizce harfler (a-z, A-Z)
  • 0 ila 9 arası rakamlar
  • Karakterler ! # $ % & ' * + - / = ? ^ _ ` { | } ~ karakteri (nokta, nokta, nokta), ilk veya son karakter olmaması ve ayrıca art arda iki veya daha fazla kez görünmemesi koşuluyla.

Ek olarak, tırnaklı dizelere (yani: "John Doe"@example.com) izin verilir, böylece aksi takdirde yasaklanacak karakterlere izin verilir, ancak bunlar yaygın uygulamada görünmez. RFC 5321 ayrıca "posta almayı bekleyen bir ana bilgisayar, Yerel bölümün Tırnaklı dize biçimini gerektirdiği (veya kullandığı) posta kutularını tanımlamaktan kaçınmalıdır" uyarısında bulunur.

Yorumlar (3)

Vikipedi makalesi]1'den başlayabilirsiniz:

  • Büyük ve küçük İngilizce harfler (a-z, A-Z)
  • 0'dan 9'a kadar rakamlar
  • Karakterler! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Karakter . (nokta, nokta, nokta) ilk veya son karakter olmaması ve ayrıca art arda iki veya daha fazla kez görünmemesi koşuluyla.
Yorumlar (0)