E-posta adresinin geçerli olup olmadığını kontrol edebilirim?

5 Cevap

Nasıl bir mantık uygulayabilirsiniz?

  • Kullanıcı bir e-posta adresi ile kaydeder

  • If provkimliked e-mail address is a valkimlik email address Then user account get's activated

  • or if it is a fake email then user account is not activated

I doubt that I can catch the - "Delivery failed reply message", right? anyhow how would you suggest to implement the above logic?

PS. Ne olursa olsun müşteri bunu istiyor, ne bir yol bulmak zorunda =) olacak

5 Cevap

Muhtemelen emin değil, sadece e-posta adresi geçerli olduğunu, ama aynı zamanda bu belirli bir kullanıcıya ait olduğunu olmak istiyorum. Bunu yapmak için her zamanki gibi bir bağlantı içeren bir e-posta göndermektir. Kullanıcı hesabını etkinleştirmek için bağlantıyı tıklayın zorundadır.

Örneğin, bağlantı bu gibi görünebilir:

http://example.com/activate?token=bc59fb46c9a0a25346889e5ab336f11c

token size oluşturulan ve veritabanında saklanan, bu hesaba bağlı rastgele bir dize olduğu. activate sayfa arkasında sunucu tarafı kod sonra hesabını aktive edecektir. Bir hafta, diyelim ki, içinde bu token için bir hit alamıyorsanız, hesabı ve aktivasyon belirteci temizleyebilirsiniz.


Addition in reply to your comment...

Alternatif bir yol, bir SMTP bağlantısı başlatmak için, ve bir e-posta göndermeye başlamak için çalışacaktı. Bu e-posta sunucuları arasında callback verification benzer. Örneğin (< posta sunucusu diyor ki, > script göndermek olabilir budur):

< 220 example.com ESMTP Postfix
> EHLO foobar.com
< 250 OK
> MAIL FROM: noreply@foobar.com
< 250 OK
> RCPT TO: johndoe@example.com
< 550 Recipient address rejected: User unknown in local recipient table
> QUIT
< 221 Bye

Bu uygulamada kullanılmaz neden olan bu yaklaşım ile çeşitli sorunlar vardır. Bunların çoğu yanlış kabul iletileri neden olur, bazı çek tamamen başarısız olmasına neden olacaktır:

  • Siteniz port 25 (SMTP) ve 445 (SSMTP) giden bağlantıları yasaklayan bir güvenlik duvarı arkasında, hatta uzak sunucuya bağlanamıyor.
  • Bu teknik adres yanlış yazılmış ise size, ama başka bir geçerli adres sonuçlandı olmaz. Örneğin, hotmail.com de, hayal edebileceğiniz hemen hemen herhangi bir adres alınacaktır.
  • Posta sunucusu aşağı veya ulaşılamaz ise, hesap oluşturma başarısız olur.
  • Posta sunucusu geçersiz adresleri için posta kabul etmek üzere yapılandırılmış ise, herhangi bir adres kabul edilecektir.
  • Posta sunucusu nihai alıcı, ama sadece bir röle ev sahibi değilse, herhangi bir adres kabul edilecektir.
  • Eğer çok sık bir posta sunucusu soruşturma varsa, sizi kara listeye olabilir.
  • Siteniz posta sunucularını çekiç, kötü niyetli bir kişi veya bot tarafından istismar edilebilir. (Bu aynı zamanda tam bir doğrulama e-posta göndermek durumdur. Her iki durumda da bir captcha kullanın.)

the Postfix manual ve a disputed section on Wikipedia Ayrıca bkz. Ben bu liste onun sorunu için iyi bir çözüm olduğunu müşteri ikna etmek için yeterince uzun, ve o sizden imkansız soran durdurmak gerektiğini umuyoruz.

neden bir doğrulama sistemi uygulamak değil. Onlar bir hesap oluşturun. Onlara bir doğrulama numarası ile bir e-posta gönderebilirsiniz. Bu e-postadaki bağlantıyı tıklatın ve sonra bu veritabanı üzerinden çalıştırmak ve o belirli doğrulama kimliği etkinleştirin.

Birçok web sitesi, bu tekniği kullanmak ve kontrol çeşit tutmaya yardımcı olur.

Umarım bu yardımcı olur

Ayrıca PHP işlevi checkdnsrr ($ hostname) kullanabilirsiniz. Örneğin:

if (checkdnsrr("comcast.net")) 
{ 
echo 'Email valid!'
return true;
}
else
{
echo 'Email invalid!';
return false;
}

Bu doğru dönmek ve yankılanacak "geçerli e-posta!" comcast.net geçerli bir ISP çünkü. Bu işlev, en azından, "'johndoe@foobar.com girmesini önleyecektir.

Regular Expressions , bu (yani, bir "@" içeren bir üst düzey etki alanı, bir etki alanı var bunu geçerli bir e-posta yapıdır sağlamak için e-postanın biçimini doğrulamak için bir yoldur içine bak vs)

Bu sadece e-posta geçerli olmasını sağlayacaktır, ancak fakeMan@FakeLand.com gibi sahte bir e-posta hala geçerdi. E-posta gerçek olduğundan emin olmak için, bir posta sunucusu üzerinden e-posta göndermek gerekiyor ve sıçrama arkaları için kontrol ediyorum. Bunun ne kadar süreceğini tahmin etmek zor olduğu, geri sıçrama ile yanıt e-posta sunucusu için beklemek zorunda kalacak, çünkü bu süreç, bir zaman alabilir. Eğer kullanıcıların birkaç gün beklemek istiyorsanız, o zaman iyi.

Standart o Düzenli ifadeler kullanarak, doğru biçim olduğundan emin olmak için e-posta doğrulamak için olduğunu. O zaman ne yapmak kullanıcının e-posta bir doğrulama anahtarı gönderilir. Onlar kaydolmak işlemini tamamlamak için, sonra anahtarı almak için geçerli bir e-posta gerekir.

Tabii ki, siteleri kaydolmak için geçici e-posta kullananlar hala var. Onlara doğrulama anahtarı almak için yeterli 24 saat ya da öylesine için var olan bir e-posta, var ... bunu tüm hizmetleri fişliyor dışında bunu kullanıcılar, etrafında almak için gerçek bir yol yoktur (ve bir sürü vardır.)

Bu gerçek e-posta sözdizimi ifadedir: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Bunu önemsiz bir iş değildir, bkz.