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 [email protected]) ve her iki bölümde de izin verilen karakterler.
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
ilaZ
vea
ilaz
;
0
ile9
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[email protected]
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)[email protected]
her ikisi de[email protected]
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.
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.
Vikipedi makalesi]1'den başlayabilirsiniz: