2011-01-12 11 views
5

Jak sprawdzić, czy identyfikator e-mail istnieje, czy nie używa PHP? i uzyskać informacje o właścicielu identyfikatora e-maila? czy można uzyskać informacje o właścicielu identyfikatora e-mail? czy trzeba pracować z niektórymi protokołami, takimi jak POP? Proszę pomóż mi.Jak sprawdzić, czy identyfikator e-mail istnieje, czy nie?

+1

Zakładam, że przez "id", masz na myśli "adres". Dlaczego chcesz to zrobić? Chociaż jestem pewien, że istnieje wiele ważnych przypadków użycia, brzmi to dla mnie jako spam. – inkedmn

+0

@inkedmn: chcę go użyć na stronie rejestracji witryny, aby zweryfikować adresy e-mail, aby zapobiec spamowi i fałszywym rejestracjom! absolutnie do wykrywania oszustw! – brainless

+0

Wysłanie linku aktywacyjnego dotyczy wyłącznie Twojej opcji. – drudge

Odpowiedz

12

Powiedzmy użytkownik przesyła następujący adres e-mail:

Kontrole chciałbyś wykonać w kolejności są tak:

  • Czy adres jest ważny
  • Czy domena uruchomić serwer pocztowy/MX Records
  • Czy jest na czarnej liście

pierwsze ciągu PHP można potwierdzić e-mail za pomocą filter_var tak:

$is_valid = filter_var("[email protected]",FILTER_VALIDATE_EMAIL); 

Po drugie, co chcesz sprawdź, czy w domenie działa serwer e-mail, aby to zrobić, sprawdź rekordy dns dla MX, tak:

$has_dns_mx_record = checkdnsrr("stackoverflow.com","MX"); 

kupili także otworzyć port w domenie tak:

$socket = fsockopen("stackoverflow.com", 25); 
$mail_running = (bool)$socket; 
fclose($socket); 

Można również sprawdzić, czy serwer SMTP reaguje z 550, czyli e-mail nie istnieje, tak jak poniżej:

SEND > helo hi 
250 stackoverflow.com 

SEND > mail from: <[email protected]> 
250 2.1.0 Ok 

SEND > rcpt to: <[email protected]> 
> 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table 

Patrząc na powyższe można wysyłać polecenia do prawidłowego serwera SMTP, takiego jak helo>mail from <...> i sprawdzić odpowiedź 550.

Spójrz tutaj dla niektórych kodów odpowiedzi: http://www.greenend.org.uk/rjk/2000/05/21/smtp-replies.html

Ponadto należy wziąć pod uwagę komentarzu @ slebetman stwierdzające, że niewielki odsetek mail> serwery są skonfigurowane tak, aby reagować 550, aby zapobiec wąchania się poprawnych adresów e-mail.

Czarna lista kontrolna jest dość proste, to po prostu znaleźć godnej DNSBL serwer zapewniający bramę na sprawdzeniu sprawdzić domenę, aby sprawdzić, czy został on na czarnej liście, jeśli ma ona e-mail może okazać się ważne i aktywny, ale został oznaczony jako spam, dlatego jest to niezaufana wiadomość e-mail. Powinieneś poprosić o alternatywny adres e-mail, aby autoryzować pod

Oto niektóre z technik sprawdzania poprawności używanych do sprawdzania poprawności adresu e-mail. Teraz jest wiele metod sprawdzania poprawności, ale to tylko niektóre z głównych.

+4

Ma 99% szansy na działanie. Istnieje kilka serwerów pocztowych skonfigurowanych tak, aby nigdy nie zwracały odpowiedzi 550, aby skrypty nie mogły wykryć prawidłowego adresu e-mail. Mój własny serwer e-mail jest skonfigurowany w ten sposób. Tak samo jest z pocztą Yahoo. – slebetman

+0

Bardzo dobry punkt, nigdy o tym nie pomyślałem. – RobertPitt

13

Nie ma 100% gwarancji, że adres e-mail jest ważny bez wysłania wiadomości e-mail i udzielenia użytkownikowi odpowiedzi w pewien sposób. Istnieje możliwość sprawdzenia, czy adres e-mail jest poprawny, czy nie. Możesz wykonać wyszukiwanie DNS i sprawdzić, czy domena ma rekord MX. Istnieją również części protokołu SMTP, którego możesz użyć, ale nic nie nakazuje, aby serwer SMTP odpowiedział na te polecenia. Centralops.net zapewnia produkt, który może pomóc, ale znowu nie jest gwarantowany.

Jeśli istniał na to pewien sposób postępowania, dlaczego praktycznie każda witryna z funkcją rejestracji wymagałaby w jakiś sposób odpowiedzi na wiadomość e-mail? Pytanie nie ma być szyderstwem; Mam tylko nadzieję, że pomoże ci to zauważyć, że inne witryny nie były w stanie wykonać tego samego czeku, o który prosisz.

HTH

+1

Natknąłem się na link podczas googlowania. http://www.verifyemailaddress.org/. jak mogli to zrobić? myślę, że zrobili to dobrze. – brainless

+1

Sprawdź moją odpowiedź @brainless. – RobertPitt

+1

Ale nie ma sposobu, aby być pozytywnym. Możesz wykonać czynności opisane przez RobertPitt, niektóre z jego list, które mam w mojej odpowiedzi (choć wyjaśnia bardziej szczegółowo), ale na koniec dnia, jedynym sposobem, aby się upewnić, jest wysłanie e-maila i użytkownik reaguje na nią w jakiś sposób. Niektóre serwery SMTP powiedzą, że adres e-mail nie istnieje od razu, ale inne po prostu akceptują pocztę, a następnie umierają w eterze. Wiele serwerów SMTP nie odpowiada na pytanie, czy istnieje adres e-mail. Wyłączyli to, aby powstrzymać spamowanie. –

Powiązane problemy