Inne odpowiedzi omawiają różne problemy związane z próbami zrobienia tego. Pomyślałem, że pokażę, jak możesz tego spróbować, gdybyś chciał się tego nauczyć, robiąc to sam.
Możesz połączyć się z serwerem pocztowym przez telnet, aby zapytać, czy istnieje adres e-mail. Oto przykład testowania adresu e-mail dla stackoverflow.com
:
C: \> nslookup -q = mx stackoverflow.com
Nieautorytatywna odpowiedź:
stackoverflow.com MX preference = 40, mail exchangeanger = STACKOVERFLOW.COM.S9B2.PSMTP.com
stackoverflow.com MX preference = 10, mail wymiennik = STACKOVERFLOW.COM.S9A1.PSMTP.com
stackoverflow.com MX preference = 20, mail exchangeanger = STACKOVERFLOW.COM.S9A2.PSMTP.com
stackoverflow.com MX preference = 30, mail exchangeanger = STACKOVERFLOW.COM.S9B1.PSMTP.com
C: \> telnet STACKOVERFLOW.COM.S9A1.PSMTP.com 25
220 Postini ESMTP 213 y6_35_0c4 gotowy. Sekcja 17538.45 Kodeksu Biznesu i Zawodów CA zabrania używania tego systemu do niechcianych reklam wysyłanych pocztą elektroniczną.
cześć cześć
250 Postini wita się ponownie
poczta od: <me@myhost.com>
250 Ok
rcpt to: <fake@stackoverflow.com>
550-5.1.1 Konto e-mail, do którego próbujesz się dostać, nie istnieje. Proszę spróbować
550-5.1.1 podwójne sprawdzenie adresu e-mail odbiorcy pod kątem literówek lub
550-5.1.1 niepotrzebnych spacji. Dowiedz się więcej na
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 w41si3198459wfd.71
Wiersze poprzedzone kodami numerycznymi to odpowiedzi z serwera SMTP. Dodałem kilka pustych wierszy, aby było bardziej czytelne.
Wiele serwerów pocztowych nie zwraca tych informacji jako środka zapobiegającego przechwytywaniu adresów e-mail przez spamerów, więc nie możesz polegać na tej technice. Jednak możesz odnieść pewien sukces w usuwaniu niektórych ewidentnie złych adresów e-mail, wykrywając nieprawidłowe serwery pocztowe lub odrzucając adresy odbiorców, jak powyżej.
Zauważ też, że serwery pocztowe mogą Cię umieścić na czarnej liście, jeśli wyślesz do nich zbyt wiele żądań.
W PHP Wierzę, że można użyć fsockopen
, fwrite
i fread
wykonać powyższe kroki programowe:
$smtp_server = fsockopen("STACKOVERFLOW.COM.S9A1.PSMTP.com", 25, $errno, $errstr, 30);
fwrite($smtp_server, "helo hi\r\n");
fwrite($smtp_server, "mail from: <me@myhost.com>\r\n");
fwrite($smtp_server, "rcpt to: <fake@stackoverflow.com>\r\n");