Aide - Recherche - Membres - Calendrier
Version complète : Savoir si un adresse e-mail exsite
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Cyber6ou
Salut @ tous icon_biggrin.gif !

Est-il possible en PHP de savoir si une adresse e-mail existe ?
Avant d'envoyer une newsletter je voudrais savoir si les adresse e-mails qui sont dans ma BDD existent bien
afin d'éviter des envois pour rien (OVH bloque l'envoit des e-mails quand trop d'adresses e-mail n'existent pas)

Merci pour vos infos...
neolao
j'ai le même problème que toi avec OVH

Mais on ne peut pas vraiment savoir, puisque ce n'est qu'une adresse. Tu peux déjà vérifier que le domaine du mail a une IP. Ensuite, tu ne sais pas comment il le gère avant d'envoyer réellement le mail.

Tu ne peux pas savoir avant d'envoyer le mail en fait.

C'est comme une page web, tu demandes la page, et tu recois une 404. Mais t'es obligé de la demander la page pour avoir un retour 404.
Matthieu!
En testant directement sur le serveur mail si l'adresse existe ?

nslookup + getmxrr ?

Pas possible chez ovh ?
Cyber6ou
Citation (MatthieuLombard)
En testant directement sur le serveur mail si l'adresse existe ?
nslookup + getmxrr ?

En cherchant sur le net au sujet de nslookup j'ai trouvé ceci : http://www.tienhuis.nl/php-email-address-v...th-verify-probe
J'ai testé quelques adresses existantes mais les résultats ne semblent pas à 100% fiables notamment pour les adresses free
Cyber6ou
Je ne comprends pas tout la icon_eek.gif

J'ai récupéré le script et le formulaire pour tester l'adresse e-mail donnés sur ce site : http://www.tienhuis.nl/php-email-address-v...th-verify-probe
et je les ai mis sur mon serveur.
Quand je teste l'adresse cgxdgdf@hotmail.com (qui normalement ne devrait pas exister) depuis le site du script ça me renvoit :
Citation
Unverified address: mx1.hotmail.com said: 550 Requested action not taken: mailbox unavailable

Réponse à priori normale.

Par contre quand je test la même adresse depuis mon site ça revoit :
Citation
This address appears to be correct!

Voici le code du formulaire :

PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>E-mail address verification example</title>
<style type="text/css">
span.bad {color:red; font-weight:bold;}
span.good {color:green; font-weight:bold;}
</style>
</head>
<body>
<h1>E-mail address verification demo</h1>
<p>
<form name="form1" method="post" action="<?=$_SERVER['SCRIPTNAME']?>">
<input name="email" type="text" id="email" value="<?=$_REQUEST['email']?>" size="40" />
<input type="submit" name="Submit" value="Check me!" />
</form>
</p>

<p>
<?php
# Get this function at http://www.tienhuis.nl/files/email_verify_source.php
# and save as VerifyEmailAddress.php
require_once "VerifyEmailAddress.php";

if($_REQUEST['email']) {
# Do the actual check and notify if any errors come back.
# READ THE COMMENTS IN THE FUNCTION, THIS IS SITE SPECIFIC!
# WILL NOT WORK WITHOUT SITE LOCAL MODIFICATION.
# You have been warned icon_wink.gif
$error = validateEmail($_REQUEST['email'], true, true, 'postmaster@tienhuis.nl', 'outkast.tienhuis.nl', true);
if ($error) {
echo "<span class='bad'>$error</span>";
} else {
echo "<span class='good'>This address appears to be correct!</span>";
}
}
?>
</p>

</body>
</html>
J'ai fais un copier/coller du code et pourtant ça ne me donne pas le même résultat icon_eek.gif !
Merci de m'aider à comprendre.
Cyber6ou
Personne ?
Antoine
Si tu lis les commentaires, tu peux voir que la fonction est site specific. Tu dois donc modifier un des paramètres d'appel à la fonction. En l'occurence, il s'agit ici du paramètre helo address.

Code
$helo_address (string)
This should be the hostname of the machine that runs this site.


Si cela ne marche toujours pas, donne nous le résultat en mode debug ($debug = True, avant l'appel à la fonction)
Cyber6ou
Citation (Antoine)
Si tu lis les commentaires, tu peux voir que la fonction est site specific. Tu dois donc modifier un des paramètres d'appel à la fonction. En l'occurence, il s'agit ici du paramètre helo address.

La fonction est appelée comme ceci :

PHP

$error = validateEmail($_REQUEST['email'], true, true, 'courrier@troctontemps.com', 'troctontemps.com', true);
Le résultat est toujours faux.
Citation (Antoine)
Si cela ne marche toujours pas, donne nous le résultat en mode debug ($debug = True, avant l'appel à la fonction)
Citation
Checking server mx1.hotmail.com...
Opening up socket to mx1.hotmail.com... Succes!
mx1.hotmail.com replied: 220 8.mail-out.ovh.net ESMTP

HELO troctontemps.com
250 8.mail-out.ovh.net
(0.59 ms)
MAIL FROM: <courrier@troctontemps.com>
250 ok
(0.55 ms)
RCPT TO: <cgxdgdf@hotmail.com>
250 ok
(0.65 ms)
QUIT
221 8.mail-out.ovh.net
(0.56 ms)
Succesful communication with mx1.hotmail.com, no hard errors, assuming OK

This address appears to be correct!

Antoine
La trace semble correcte. Je penche plutot vers le fait que Microsoft ne réponde pas à ce genre de requête (ou du moins partiellement) pour éviter aux spammeur de ne pouvoir spammer que des boîtes valides.

Quand on compare les deux traces, les résultats sont différents (le serveur MX utilisé n'est pas le même non plus). Peut-être que l'auteur utilise une version plus à jour ou modifiée. Tu peux toujours lui envoyer un email.
Cyber6ou
Citation (Antoine)
Quand on compare les deux traces, les résultats sont différents (le serveur MX utilisé n'est pas le même non plus). Peut-être que l'auteur utilise une version plus à jour ou modifiée. Tu peux toujours lui envoyer un email.

Je vais envoyer un mail à l'auteur.

Sinon, as-tu des liens sur ce qu'est un serveur MX (c'est la 1ère fois que j'en entends parler), j'ai trouvé quelques infos sur le net mais je ne comprends pas grand chose, et comment faire pour pour utiliser la bonne version.

Au sujet de la fonction getmxrr la doc PHP dit :
Citation (PHP.net)
Cette fonction n'est pas disponible sur les machines Windows. Pour la remplacer, essayez la classe » PEAR : » Net_DNS.

Je vais voir ce que je peux trouver sur cette classe, et si elle peut me servir à résoudre mon problème.
Si tu as des infos je suis preneur...

Merci pour ton aide icon_biggrin.gif
Antoine
La page de Wikipedia sur le MX est assez complète
> http://en.wikipedia.org/wiki/MX_record
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.