Vérification email, une VRAI vérification !

WRInaute accro
Bonjour,

à ne surtout pas faire !
il génère des commandes de vérification comprise comme des attaques par certains serveurs et vous allez étre mis dans des listes noires.
 
WRInaute occasionnel
de toute façon, je crois que la vérification du format de l'adresse saisie avec tous les scripts qui trainent sur le web suffit amplement.

j'avais lu sur un forum qu'a la vue de ce genre de script, des serveurs de mail répondait systematiquement erreur, ce qui avait pour désavantage de bloquer l'internaute dans sa saisie de formulaire...
 
WRInaute impliqué
Code:
if(!function_exists('getmxrr'))
{
	function getmxrr($hostname,&$mxhosts)
	{
		if(!is_array($mxhosts))
			$mxhosts = array();
		if( !empty( $hostname ) )
		{
			@exec( "nslookup -type=MX $hostname", $output, $ret );
			while( list( $k, $line ) = each( $output ) )
			{
				// On recherche la présence de d'entrées MX:
				if( ereg( "^{$hostname}\tMX preference = ([0-9]+), mail exchanger = (.*)$", $line, $parts ) )
				{
					$mxhosts[ $parts[1] ] = $parts[2];
				}
			}
			if( count( $mxhosts ) )
			{
				// S'il y a plusieurs enregistrements MX, on les classe par ordre de priorité
				reset( $mxhosts );
				ksort( $mxhosts );
				$i = 0;
				while( list( $pref, $host ) = each( $mxhosts ) )
				{	
					$mxhosts2[$i] = $host;
					$i++;
				}
				$mxhosts = $mxhosts2;
				return true;
			}else{
			 	return false;
			}
		}
	}
}

function mailCheck($Email)
{
	// L'adresse email doit être correctement formattée
	if(!eregi("^[[:alpha:]]{1}[[:alnum:]]*((\.|_|-)[[:alnum:]]+)*@[[:alpha:]]{1}[[:alnum:]]*((\.|-)[[:alnum:]]+)*(\.[[:alpha:]]{2,})$", $Email))
		exit('L\'adresse '.$Email.' est mal formatée');
	// On récupère le domaine
	list(,$domain ) = split('@',$Email); 
	// On cherche des enregistrements MX dans les DNS
	if (getmxrr($domain, $MXHost)) 
		$ConnectAddress = $MXHost[0];
	else
		$ConnectAddress = $domain;
	// On créé la connexion sur le port smtp (25)
	$Connect = @fsockopen($ConnectAddress,25,&$errno,&$errstr); 
	if($Connect)
	{
		if(ereg("^220", $Out = fgets($Connect, 1024)))
		{
			fputs ($Connect, "HELO {$_SERVER['HTTP_HOST']}\r\n");
			$Out = fgets ( $Connect, 1024 );
			fputs ($Connect, "MAIL FROM: <{$Email}>\r\n");
			$From = fgets ( $Connect, 1024 );
			fputs ($Connect, "RCPT TO: <{$Email}>\r\n");
			$To = fgets ($Connect, 1024);
			fputs ($Connect, "QUIT\r\n");
			fclose($Connect);
			// Si le code renvoyé par la commande RCPT TO est 250 ou 251 (cf: RFC)
			// Alors l'adresse existe
			if (!ereg ("^250", $To) && !ereg ( "^251", $To )) {
				echo 'Adresse rejetée par le serveur '.$To;
				return false;
			}
			else {
				echo 'Adresse acceptée par le serveur';
				return true;
			}
		}else{
			echo 'Le serveur n\'a pas répondu';
			return false;
		}
	}else{
		// Connexion au serveur de messagerie impossible
		// vous pouvez afficher le message d'erreur en décommentant la ligne suivante:
		echo $errno."-".$errstr;
		return false;
		
	}
}

Teste directement sur le serveur mail si l'adresse existe.

Il est à noter que certain serveur mail acceptent quand même le mail même si l'adresse n'existe pas.
 
WRInaute discret
De plus sur si le serveur distant est un peu long a repondre, votre page va mettre un temps beni a s'afficher...
 
WRInaute discret
Bonjour,

Par ailleurs, si un catchall est configuré sur le domaine, vous aurez beau tester toutes les adresses de la terre, elles seront toutes valides...

Olivier
 
Nouveau WRInaute
Le mieux reste de demander confirmation par email.
si l'email est valide, l'utilisateur reçois ce mail et confirme via lien, code, etc...

La peuve : la plupart des MOS et Forums demandent confirmation par mail.
Comme ça au moins on est sur que le mail existe. :p
 
WRInaute occasionnel
Pour avoir bossé dans le domaine de la collecte de mail, je connais ce genre de scripts. C'est vrai que ça permet de valider une bonne partie des adresses, mais le plus simple est de faire des tests simples :

Contrôler le nom de domaine. wanadoo.com au lieu de wanadoo.fr, aol.fr au lieu de aol.com etc.
Ensuite, un contrôle simple de la partie gauche. Si vous avez le nom et le prénom de votre internaute, vérifiez :
Monsieur Robert Dupont vous donne comme adresse : robert.dupond@jesaispasou.fr, vous pouvez corriger de suite.

Honnêtement, avec juste un peu de bon sens, on élimine 80% des mauvais mails, qui sont le + souvent des mails mal saisis.

++
 
Nouveau WRInaute
Bonjour,
Depuis 1 an y a t il du nouveau ?
Je cherche un moyen de vérifier que l'adresse mail existe réellement.
Nous avons ouvert notre site il y a quelques mois, et avons récupéré de vieux mails, et je souhaite nettoyer ma base mail en supprimant tous les mails qui de maniére certaine n'existe plus ou pas.
L'idéal serait un upload de notre base comme le fait Checklist de goto mais en gratuit;) D'ailleur j'ai téléchargé la version d'évaluation mais cela na pas l'air de marcher trés bien. Connaissez-vous autre chose ?
Merci pour votre aide.
 
WRInaute passionné
Hello,

comme déjà dit plus haut la seule méthode réellement efficace est d'envoyer un email de validation dans chaque boite.

Après dans ton cas, deux méthodes :
- tu te bases sur les réponses "postmaster" qui te disent si la boite existe ou non
- tu mets un lien à cliquer dans cet email. Si la personne ne clique pas sous 7 jours (par exemple), tu considères la boite comme inexistante.
 
Nouveau WRInaute
Merci pour ta réponse.
Le probléme se sont les personnes inscrites depuis longtemps qui ne cliqueront pas forcément sur le lien ...
Je peux difficilement me permettre de supprimer des mails qui sont potentiellement intéressant.
Si vous avez d'autres idées ?
 
WRInaute passionné
Bah si la personne ne consulte plus ses mails, je ne vois pas en quoi elle est interessante ;)
 
Nouveau WRInaute
Elle peut consulter ces mails mais ne pas prêter attention au fait de valider son adresse alors qu'elle recoit depuis plusieurs mois nos mails sans probléme ;)
 
WRInaute passionné
Pas faux. Dans ce cas il te reste la consultation des logs du MTA lors de l'envoi (ou lecture des emails "postmaster" qu'il envoit)
 
WRInaute accro
J'en profite sur ce thread..

Comment faire pour vérifier notre lliste d'adresses électroniques ?

..plus précisement, comment savoir, justement, si les adresses exsite toujours...en effet après quelques années il se peut que certains changent d'adresse électronique, sans désinscrire l'ancienne...de ce fait nous envoyons des courriels inutilement...

Comment faire une vérification de notre lliste d'adresses électroniques ?
 
WRInaute discret
Bonjour,

Nous envoyons des confirmations d'inscription dans un email avec un lien pour valider le compte. Mais certains email n'arrivent pas meme si l'email est correcte, il semblerait donc que notre email soit perfois considéré comme du spam.

Actuellement, nous avons mis le nom et prénom de la personne dans l'email (les emails sont donc personnalisés), le format est TEXTE et HTML. Et notre email ne contient pas de pièce jointe.

Quelle sont les bonnes pratiques à appliquées pour que notre email ne soit pas considéré comme un spam ?

Des avis ou des retours d'expérience sur la question nous aideraient a faire les bons choix, merci.

PS : mon site http://www.rapidemploi.com
 
WRInaute passionné
PotdeCrayon : bah c'est automatique justement... si tu spécifies une boite mail de retour spécifique, PHP pourra aller la checker et donc identifier ces cas d'erreurs.
Ou si tu as accès aux logs de ton serveur de mail (c'est le cas si tu as un serveur dédié par exemple), et bien PHP pourra très facilement y trouver ces fameuses erreurs également.

Un de mes clients fait ça régulièrement, ça marche très bien et est 100% automatisé.

Sinon tu peux aussi passer par un prestataire spécialisé (Splio par exemple), qui utilisera exactement le même genre de solution.
 
Nouveau WRInaute
Je ne suis pas du tout technicien alors tume parles un peu chinois ;). Je comprends l'idée malheureusement je suis incapable de la réaliser.
Je cherche un programme qui en lui injectant une BDD te retourne les mails définitivement en erreur car l'adresse n'existe plus ou pas.
Dans tous les cas merci pour ton aide je vais voir autrement.
A+
 
WRInaute discret
deux solutions :
- tu prends quelqu'un qui s'y connait pour le faire
- tu le fais manuellement en supprimant de la BDD les adresses qui te reviennent.
 
Nouveau WRInaute
Une autre solution consiste à envoyer un email HTML à toutes les adresses à vérifier. Un email type newsletter par ex.
Dans le code HTML envoyé, il faut insérer un lien image qui pointe sur une page PHP en lui passant un paramètre unique (un ID correspondant à l'email du destinataire). La page PHP peut même renvoyer effectivement une image et si ce n'est pas a cas, on peut définir la taille de l'image à 0 pour qu'elle soit invisible.

En faisant ainsi, dès qu'un destinataire lit le mail, il confirme sans le savoir son adresse et le tour est joué.

Inconvénient de la méthode :
- il faut créer la page PHP adéquate (ce type de script doit être dispo sur la toile).
- pour l'envoi, il faut générer les emails avec un soft ou en php avec une liaison sur la DB pour obtenir ou stocker les ID générés.

A+
 
WRInaute discret
cyberkat a dit:
Une autre solution consiste à envoyer un email HTML à toutes les adresses à vérifier. Un email type newsletter par ex.
Dans le code HTML envoyé, il faut insérer un lien image qui pointe sur une page PHP en lui passant un paramètre unique (un ID correspondant à l'email du destinataire). La page PHP peut même renvoyer effectivement une image et si ce n'est pas a cas, on peut définir la taille de l'image à 0 pour qu'elle soit invisible.

En faisant ainsi, dès qu'un destinataire lit le mail, il confirme sans le savoir son adresse et le tour est joué.

Inconvénient de la méthode :
- il faut créer la page PHP adéquate (ce type de script doit être dispo sur la toile).
- pour l'envoi, il faut générer les emails avec un soft ou en php avec une liaison sur la DB pour obtenir ou stocker les ID générés.

A+

La méthode est bien connue (surtout par les softs de campagne d'emailing) mais n'est pas très efficace pour plusieurs raisons.

- Quid de ceux qui ne recoivent les mails qu'au format text ?
- Certains clients mails filtrent ce genre de scripts.
 
Nouveau WRInaute
Aucune méthode indolore n'est efficace à 100% pour faire cela en effet. Le tout est de savoir quelles concessions on est prêt à faire.
Pour les points évoqués :

- ceux qui ne reçoivent les emails au format texte uniquement sont minoritaire (et largement à mon avis). De plus, rien n'empèche d'intégrer une invitation à cliquer sur un lien (visible uniquement par eux) pour les connecter au site et vérifier leur email par la même occasion.

- Ce genre de script peut passer les filtres si on utilise la méthode de l'URL rewriting.

Voilà, c'est juste ma pierre à l'édifice qui n'est pas simple à mettre en oeuvre.

A+
 
WRInaute discret
cyberkat a dit:
Aucune méthode indolore n'est efficace à 100% pour faire cela en effet. Le tout est de savoir quelles concessions on est prêt à faire.
Pour les points évoqués :

- ceux qui ne reçoivent les emails au format texte uniquement sont minoritaire (et largement à mon avis). De plus, rien n'empèche d'intégrer une invitation à cliquer sur un lien (visible uniquement par eux) pour les connecter au site et vérifier leur email par la même occasion.

- Ce genre de script peut passer les filtres si on utilise la méthode de l'URL rewriting.

Voilà, c'est juste ma pierre à l'édifice qui n'est pas simple à mettre en oeuvre.

A+

Oui j'utilise déjà l'url rewriting avec une image invisible pour gérer le taux d'ouverture des mailings, mais je dois dire que clairement cela ne suffit et donne des résultats pas très probants.

De toute facon effectivement comme tu le dis, il n'y a pas de méthode parfaite.
 
Nouveau WRInaute
salut,
ya un tuto sur developpez.com, Date de publication : 13 mai 2006

Validation d'adresse e-mail en PHP.
Au fait pour la validation des email, je suis avec la confirmation de l'inscription..etc , qu'on trouve souvent dans les forums, mais on peu utiliser ce script (s'il est fiable) pour trier les anciens emails inexistants, des nouveaux!

Bonne continuation
 
WRInaute discret
La seule chose fiable que tu pourra vérifier par tes propres moyens c'est l'existence d'un champ MX sur le domaine.

La seule vérification fiable de l'adresse email complète est le lien de validation dans un email.
 
WRInaute discret
Xou a dit:
La seule chose fiable que tu pourra vérifier par tes propres moyens c'est l'existence d'un champ MX sur le domaine.

La seule vérification fiable de l'adresse email complète est le lien de validation dans un email.

Tout a fait.
Attention cette méthode est fiable dans la mesure ou l'internaute recoit l'email, car avec l'emergence des anti-spam devenus très aggressifs (voire trop). Certains anti-spams traitent nos emails (pourtant plutot standard comme des spams, ce qui fait que la personne ne peut pas valider son compte ...)
 
Discussions similaires
Haut