OVH Cloud OVH Cloud

suppression de mails invalides dans une base ?

31 réponses
Avatar
Atelier Alupi
Bonjour à tous,

Y a-t-il un moyen de tester les adresses emails d'une base de données MySql
avec php et de supprimer les mails qui reviennent "Undelivered" ? Si
quelqu'un opère ce tour de magie, chapeau !

Nicolas

10 réponses

1 2 3 4
Avatar
xav
Bonjour à tous,

Y a-t-il un moyen de tester les adresses emails d'une base de données MySql
avec php et de supprimer les mails qui reviennent "Undelivered" ? Si
quelqu'un opère ce tour de magie, chapeau !

Nicolas
Bonjour,

oui c'est possible jusqu'a un certain niveau, tu peut tester la
construction syntaxique de l'adresse, l'existence du domaine, et dans
certains cas (mais moins fiable) l'existence de la BAL.

quelque chose comme ca (attention code non testé...) peut remplir les 2
premieres fonctions et deja nettoyer pas mal, pour le test des BAL il
faut jouer avec une classe qui effectuerai une connection vers le smtp ,
celle ci: http://phpclasses.comrax.com/browse/package/13.html par
exemple peut trés bien faire l'affaire.

A++

<?php

/**
* Verification de l'existance de checkdnsrr
*/

$check_domain = true;

if (!function_exists('checkdnsrr')){
echo "Attention, checkdnsrr non present, la validation de domaine ne
pourra etre effectuée";
$check_domain = false;
}

/* routine d'extraction d'un tableau contenant les emails eventuellement
associées a une clef primaire si elle ne l'est pas deja dans un
tableau nommé $adresses */

$bad_mails = array();

foreach ($adresses as $key => $adresse){

if (!isSyntaxValid($adresse){
$bad_mails[] = $adresse;
continue;
}
if ($check_domain && !isDomainValid($adresse)){
$bad_mails[] = $adresse;
continue;
}
}


//La tu recupere un tableau des emails non valides, et ensuite tu en
fait ce que tu en veux, tu remet a jour ta DB par exemple.



function isSyntaxValid($adresse)
{
//Masque resonnable, certains puristes de la regexp pourront
//parfaire le truc.
$pattern = "/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@([a-zA-Z0-9_-] )+(
[a-zA-Z0-9._-] +)+$/";
if (!preg_match($pattern, $adresse))
return false;

return true;
}

function isDomainValid($adresse)
{
list($part, $domain) = explode('@', $adresse);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;

}

?>

Avatar
jr_work75
Perso j'ai crée un script en php qui scrute la bal postmaster et qui
sucre les emails au bout de 10 retour quel quil soit .. maintenant tu
peux faire n'importe quel traitement ^^


Bonjour à tous,

Y a-t-il un moyen de tester les adresses emails d'une base de données MySql
avec php et de supprimer les mails qui reviennent "Undelivered" ? Si
quelqu'un opère ce tour de magie, chapeau !

Nicolas


Avatar
Atelier Alupi
function isDomainValid($adresse)
{
list($part, $domain) = explode('@', $adresse);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;

}



Merci beaucoup pour vos suggestions à tous, mais je ne suis pas assez doué
malheureusement, ou je n'y passe pas assez de temps, ce n'est qu'un hobby
pour moi... Bravo pour ce que vous faîtes en tout cas.
Je crois que je vais plutôt chercher un hébergeur qui accepte qu'on maile
des tonnes d'adresses invalides !

Ceci-dit, le test des caractères, je le fais à l'origine grâce à un
Javascript que m'a fait Dreamweaver, lorsque les gens rentrent leurs
coordonnées donc a priori pas besoin de le refaire.

Le test du domaine cependant est une bonne idée, par contre je n'ai pas tout
compris dans la syntaxe du if de la fonction : apparemment php a évolué
depuis que je l'ai appris. Je ne retrouve plus mes ELSE, mes OR, AND, etc.
Je sais je suis à la ramasse, je suis un dinosaure, mais je survis et je
refuse les mises à niveau, mon programme est bloqué sur le cobol. Tu veux
pas me l'écrire en style cobol ?

Avatar
Olivier Miakinen

Y a-t-il un moyen de tester les adresses emails d'une base de données MySql
avec php et de supprimer les mails qui reviennent "Undelivered" ? Si
quelqu'un opère ce tour de magie, chapeau !


C'est en réalité assez simple. Tu envoies un message à chacune des
adresses en leur demandant s'ils veulent bien confirmer leur inscription
dans ta base de données. Ceux qui répondent tu les gardes, et ceux qui
n'ont pas répondu au bout d'une semaine tu les vires -- quitte à les y
remettre s'ils se manifestent plus tard.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Marc
jr_work75 wrote:
Perso j'ai crée un script en php qui scrute la bal postmaster et qui
sucre les emails au bout de 10 retour quel quil soit .. maintenant tu
peux faire n'importe quel traitement ^^




le soucis, c'est que les formats de réponse sont tres variés. Comment
est-ce que tu fais pour t'en sortir et faire l'association avec
la bonne adresses source et le mail en reponse ?

Avatar
Patrick Mevzek
//Masque resonnable, certains puristes de la regexp pourront
//parfaire le truc.
$pattern = "/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@([a-zA-Z0-9_-] )+(
[a-zA-Z0-9._-] +)+$/";


Non, ce n'est pas raisonnable, cela rejette des adresses tout à fait
valides. Sans compter que cela va accepter des adresses invalides (pas de
_ dans les noms de domaine par exemple)

Pourquoi ne pas exploiter le travail réalisé par Olivier Miakinen
récemment ?

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>

Avatar
AkiraChaplin
avec une boucle peut être

<?php
$site = "http://www.phpscripts-fr.net";

$file = @fopen($site, 'r');
if ($file) {echo 'Lien valide !';}
else {echo 'Lien mort !';}
?>
Avatar
Mickael Wolff
Je crois que je vais plutôt chercher un hébergeur qui accepte qu'on maile
des tonnes d'adresses invalides !
Vous ne trouverez pas un tel pigeon ;) Il vaut mieux demander à

quelqu'un de vous développer un tel script pour nettoyer votre base.

Ceci-dit, le test des caractères, je le fais à l'origine grâce à un
Javascript que m'a fait Dreamweaver, lorsque les gens rentrent leurs
coordonnées donc a priori pas besoin de le refaire.


Malheur ! Ça ne sert à rien. On n'est pas obliger d'utiliser un
navigateur pour envoyer des données, et mon navigateur me permet de
désactiver le javascript.

Toutes les variables sont à tester.

Si votre formulaire ne fait aucun tests, il est certain que c'est un
spammeur potentiel... ou en puissance. Votre hébergeur risque de vous
suspendre d'un moment à un autre.

Le test du domaine cependant est une bonne idée, par contre je n'ai pas tout
compris dans la syntaxe du if de la fonction : apparemment php a évolué
depuis que je l'ai appris.


Ça de toute façon. PHP évolue vite...

Je ne retrouve plus mes ELSE, mes OR, AND, etc.


Depuis toujours on peut utiliser la syntaxe C des opérateurs booléens.

Je sais je suis à la ramasse, je suis un dinosaure, mais je survis et je
refuse les mises à niveau, mon programme est bloqué sur le cobol. Tu veux
pas me l'écrire en style cobol ?


C'est si différent le Cobol (non, ce n'est pas moi qui est jeté se
troll poilu !)

À+
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
** Spécialiste Logiciels Libres **

Avatar
Olivier Miakinen
//Masque resonnable, certains puristes de la regexp pourront
//parfaire le truc.
$pattern = "/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@([a-zA-Z0-9_-] )+(
[a-zA-Z0-9._-] +)+$/";


Non, ce n'est pas raisonnable, cela rejette des adresses tout à fait
valides. Sans compter que cela va accepter des adresses invalides (pas de
_ dans les noms de domaine par exemple)


Absolument. Par ailleurs, sans l'option x (PCRE_EXTENDED), *aucune*
adresse valide ne sera acceptée à cause des espaces dans son expression.

Pourquoi ne pas exploiter le travail réalisé par Olivier Miakinen
récemment ?


Parce qu'il n'est pas encore officiellement publié ? Notre FAQteur a du
boulot par dessus la tête en ce moment, et donc la FAQ du groupe en est
encore à l'ancienne version : <http://faqfclphp.free.fr/#rub5.3>. Quand
elle aura été approuvée, la nouvelle version devrait ressembler à ceci :
<http://www.miakinen.net/tmp/faqfclp2#rub5.3>.


Avatar
Calimero
Olivier Miakinen wrote:

C'est en réalité assez simple. Tu envoies un message à chacune des
adresses en leur demandant s'ils veulent bien confirmer leur inscription
dans ta base de données. Ceux qui répondent tu les gardes, et ceux qui
n'ont pas répondu au bout d'une semaine tu les vires -- quitte à les y
remettre s'ils se manifestent plus tard.


Ca ne permet pas de dégager les adresses devenues invalides, à moins
de demander à intervalle régulier aux gens de relavider leur compte.

--
@+
Calimero

1 2 3 4