D'autres réponses ici discutent des différents problèmes rencontrés en essayant de faire cela. J'ai pensé montrer comment vous pourriez essayer au cas où vous voudriez apprendre en le faisant vous-même.
Vous pouvez vous connecter à un serveur de messagerie via telnet pour demander si une adresse électronique existe. Voici un exemple de test de l'existence d'une adresse e-mail pour stackoverflow.com
:
C:\\>nslookup -q=mx stackoverflow.com
Non-authoritative answer:
stackoverflow.com MX preference = 40, mail exchanger = STACKOVERFLOW.COM.S9B2.PSMTP.com
stackoverflow.com MX preference = 10, mail exchanger = STACKOVERFLOW.COM.S9A1.PSMTP.com
stackoverflow.com MX preference = 20, mail exchanger = STACKOVERFLOW.COM.S9A2.PSMTP.com
stackoverflow.com MX preference = 30, mail exchanger = STACKOVERFLOW.COM.S9B1.PSMTP.com
C:\\>telnet STACKOVERFLOW.COM.S9A1.PSMTP.com 25
220 Postini ESMTP 213 y6\_35\_0c4 ready. CA Business and Professions Code Section 17538.45 forbids use of this system for unsolicited electronic mail advertisements.
helo hi
250 Postini says hello back
mail from: <me@myhost.com>
250 Ok
rcpt to: <fake@stackoverflow.com>
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 w41si3198459wfd.71
Les lignes préfixées par des codes numériques sont des réponses du serveur SMTP. J'ai ajouté quelques lignes vides pour rendre le document plus lisible.
De nombreux serveurs de messagerie ne renvoient pas cette information afin d'éviter la récolte d'adresses électroniques par les spammeurs, vous ne pouvez donc pas compter sur cette technique. Cependant, vous pouvez réussir à éliminer certaines adresses électroniques manifestement mauvaises en détectant les serveurs de messagerie non valides ou en faisant rejeter les adresses des destinataires comme indiqué ci-dessus.
Notez également que les serveurs de messagerie peuvent vous mettre sur liste noire si vous leur adressez trop de demandes.
En PHP, je crois que vous pouvez utiliser fsockopen
, fwrite
et fread
pour effectuer les étapes ci-dessus de manière programmatique :
$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");