Introduction
Ceci est une librairie (PHP) qui émule l'envoi d'un courriel en se connectant au serveur SMTP inscrit dans les MX du domaine, ce qui permet de vérifier si une adresse de courriel est utilisable avant de lui faire parvenir des courriels. On peut donc utiliser ce script pour valider des listes d'envoi.
Prérequis
- PHP >= 5.6
- fsockopen
- getmxrr
Afin d'utiliser la librairie, on doit pouvoir se connecter au port 25 distant.
Plusieurs fournisseurs d'accès ne vous permettront pas de vous connecter directement sur le port 25 distant.
Télécharger
Via git :
git clone https://github.com/webo3/smtp-email-validation.git
Ou utiliser via composer :
composer require webo3/smtp-email-validation
Comment l'utiliser
// L'adresse à partir de laquelle on souhaite établir un test
$from = "user@domain.from";
// L'adresse que nous souhaitons tester l'existence
$to = "user@domain.to";
// Lancer le test de connexion
$result = \webO3\SmtpEmailValidation\Validator::test($from, $to);
Ce script commencera par établir une connexion au serveur de courriel (MX) défini pour le domaine du courriel que nous souhaitons tester. Une fois qu'il a déterminé le serveur à utiliser, il établira une connexion et enverra les commandes SMTP HELO/MAIL FROM/RCPT TO afin de simuler un envoie de courriel. Aucun courriel ne sera envoyé.
Voici les réponses possibles :
Array
(
[code] => 10
[success] => false
[msg] => Could not find any MX record associated with the domain.
)
Array
(
[code] => 15
[success] => false
[msg] => Could not connect to any MX servers, they maybe down.
)
Array
(
[code] => 20,
[success] => false
[msg] => Server connexion timeout. They maybe connexion protection in place.
)
Array
(
[code] => 25,
[success] => false
[msg] => Server did not return a 220 response code.
)
Array
(
[code] => 250,
[success] => true
[msg] => Email is valid.
)
Array
(
[code] => 451 ou 452,
[success] => true
[msg] => The server rejected the email temporary, this indicate that greylisting is in use.
)
Array
(
[code] => 451 ou 452,
[success] => false
[msg] => The server rejected the email address.
)
Il y a plusieurs situations qui peuvent se produire. Serveur MX inconnu ou non disponible, greylisting, catch all, etc. L'utilisation de cette librairie ne garantit pas à 100% qu'une adresse existe ou pas. C'est un outil qui doit être utilisé avec des précautions et utiliser avec d'autres moyens de surveillances.