e-posta adresi doğrulama [yinelenen]

9 Cevap

Possible Duplicates:
Is there a php library for email address validation?
How to check if an email address exists without sending an email?

hi guys,

nasıl ben sadece yahoo gibi e-posta sağlayıcısı e-posta adresini doğrulamak?

senaryo:

asdfasdf@yahoo.com

nasıl i yukarıda belirtilen e-posta geçerli olduğunu yahoo.com için doğrulayabilir?

Şimdiden teşekkürler.

---- PHP Kurallar ----

9 Cevap

Ben aşağıdaki belge yardımcı olur umarım:

Validate an E-Mail Address with PHP, the Right Way

Bir e-posta doğrulamak için sadece "screensize" yolu aslında bu adrese bir e-posta göndermek için denemek için, ama çoğu kez normal bir ifade hile yapacak.

Sorunu karmaşık için, sadece bu gibi basit bir doğrulama isteyebilirsiniz

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$

ya da böyle bir biraz daha karmaşıktır

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b

E-posta doğrulama hakkında oldukça iyi bir makale var here

Sen adresine bir e-posta göndermek ve kullanıcı bir linke tıklayarak bunu doğrulamak olabilir.

Sunucuya bir SMTP bağlantısı yapın ve bir 'Gönderenin-doğrulama' arama yapın:

telnet <Yahoo MX> 25
helo here.com
mail from: here@there.com
rcpt to: asdfasdf@yahoo.com
data

Ya şanzıman ile devam etmek için bir kod alırsınız, ya da bir alıcı geçersiz mesajı verilmelidir.

Bu e-posta adresi için bir MX kaydı Look up.

Aşağıdaki regex e-posta adresleri maçlar:

^([\w-\.]+)@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.)|(([\w-]+\.)+))
([a-zA-Z]{2,4}|[0–9]{1,3})(\]?)$

rashmipandit@gmail.com - GEÇERLİ

rashmi.pandit @ gmail.com - GEÇERLİ

rashmi_pandit@gmail.com - GEÇERLİ

rashmi.pandit @ gmail - GEÇERSİZ

rashmi + pandit@gmail.com - GEÇERSİZ

Eğer RFC yönergelere göre daha karmaşık istiyorsanız, bu birini kullanabilirsiniz:

^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$

Soap çağrı, GET veya POST ya aracılığıyla bu ücretsiz web hizmeti kullanın. Yapmanız gereken tüm ona bir e-posta adresi beslemek ve bunun gerçek bir, teslim e-posta adresi olup olmadığı gösteren bir Boole değeri döndürür:

http://www.webservicex.net/ValidateEmail.asmx?op=IsValidEmail

Eğer herhangi bir adrese posta almak için izin orada çok spam / çöp postaları (www.spam.la) vardır. Bu nedenle genel anlamda bir "geçerli" e güvenmek öneririm. Belki OpenID bir seçenektir? Sadece belki gibi mevcut işlevselliği yararlanabilirler bir "geçerli" biçiminde kontrol etmek için filter_var()/FILTER_VALIDATE_EMAIL.

Yukarıdaki cevapların çoğu e-posta adresi düzenli ifade çeke bak. E-posta adresi geçerli olup olmadığını aslında görmek için, SMTP sunucusuna bağlanmak ve komutları göndermek gerekir. All details and PHP code is available here.

Eğer istekleri bir sürü göndermek eğer idareli kullanın, Yahoo sunucuları sizi engelleyebilir. Ayrıca çok başkaları tarafından açıklandığı gibi düzenli ifadeler ile birlikte kullanılması tavsiye edilir.