Detection de bonne adresse email

Fermé
hubert - 5 déc. 2006 à 17:18
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 6 août 2016 à 17:10
bonjour, je crée un site internet comportant un formulaire dans lequel je demande l'email du visiteur.
je programme en html et en javascript.
j'aimerais que le programme detecte lorsque l'adresse entrée n'a pas la forme d'un email (truc@machin.fr ou com) pour lui eviter d'envoyer un email de confirmation dans le vide ! et qu'il affiche alors un mesage d'erreur a l' utilisateur.
merci
A voir également:

6 réponses

Yelowwclo Messages postés 6 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 6 août 2016 12
3 août 2016 à 23:45
Bonjour,

tu peux utiliser https://www.validator.pizza

C'est un site gratuit qui te permet de valider un email, sur plusieurs critères (format, domaine valide, email jetable ou non, etc...)

Il y a une API pour l’intégrer a tes projets PHP au cas où.
2
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
4 août 2016 à 12:29
Le validateur et son API sont sympas, mais autant faire ça en local avec cette classe PHP par exemple plutôt que de contacter un webservice à chaque fois, donc étant plus lent qu'une vérif locale et en plus fait fuiter des e-mails à un tiers.
Si tu veux une liste de domaines à bannir (mails temporaires), il y en a une sous licence MIT à l'adresse https://github.com/ivolo/disposable-email-domains/blob/master/index.json
0
Yelowwclo Messages postés 6 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 6 août 2016 12 > ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021
6 août 2016 à 16:52
Hello, oui tu as raison, mais le problème en local, c'est que ta liste n'est jamais à jour.
Là tu délègues la tache à l'API, et tu sais que les nouveaux providers pour des emails jetables sont ajoutés au fur et à mesure. Et si t'as plusieurs projets, c'est autant de listes que tu dois mettre à jour...

Pour le fuitage des emails, c'est prévu, tu peux envoyer juste le domaine à checker, donc tu ne transmets pas l'email ;)
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228 > Yelowwclo Messages postés 6 Date d'inscription mercredi 3 août 2016 Statut Membre Dernière intervention 6 août 2016
6 août 2016 à 17:10
'suffit de mettre en place une tache
cron
, un timer
systemd
, ou même une "date d'expiration" avant la MàJ de la liste lors d'une requête de vérification en récupérant https://raw.githubusercontent.com/ivolo/disposable-email-domains/master/index.json , et pouf, le tour est joué...
Allez, 3 lignes en PHP suffisent:
if (time() > stat('bad_domains.json')['mtime'] + 60*60*24*7 /* 1 semaine */) {
    file_put_contents('bad_domains.json', file_get_contents('https://raw.githubusercontent.com/ivolo/disposable-email-domains/master/index.json'));
}
Quelle difficulté, oulala! ;)
0
voilà un lien avec le code pour tester la validité d'une adresse email !
http://www.asp-magazine.com/article-133.html
bon courage
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 déc. 2006 à 17:53
Attention, ce script ne fait pas vraiment de vérification complète... Il se contente de vérifier qu'il y a bien un @ et un . dans l'email, sans même vérifier si il n'y a pas d'espaces, d'accents, etc...
Il laisserait passer truc.machin@ , ce qui n'est vraiment valide !

Je te conseille plutôt d'aller faire un tour du côté des expressions rationnelles : (en reprenant la structure du code déjà donné, désolé j'ai la flemme de faire du 100% personnel aujourd'hui :p )
<script language="javascript">
function testemail() {

var email=document.forms['form_mail'].elements['email'].value;
var expressionEMail = /^[0-9a-zA-Z\._-]+@[0-9a-zA-Z\._-]+\.[0-9a-zA-Z\._-]+$/;

if (!email.match(expressionEMail)) {
// l'adresse entrée est incorrecte
alert("adresse email incorrecte")
}
else
{
// l'adresse est correcte
// on soumet le formulaire
document.forms['form_mail'].submit()

}
}
</script>
<form method="POST" name="form_mail" action="tr4.asp">
<input type="text" name="email" size="20"><input type="button" value="OK" onclick="testemail();"></form>
0
slooptoo > Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
5 déc. 2006 à 22:35
régulières les expressions
pas rationnelles ;-)
juste une petite correction :
/^[0-9a-zA-Z\._-]+@[0-9a-zA-Z\._-]+\.[0-9a-zA-Z]+$/
j ai juste enleve .-_ en fin
(je ne sais pas s'il existe des adresse terminant avec des numeriques
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
6 déc. 2006 à 16:29
Hum ^^
Rationnelles, justement... Le "régulière" n'est qu'une mauvaise traduction de l'Anglais "Regular Expression" !
0
slooptoo > Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
6 déc. 2006 à 18:16
ah oui c est tout à fait exact et je me suis donc bien planté sur ce coup
désolé sincerement
0
merci beaucoup c'est exactement ce que je cherchais !
a une prochaine (je debute..) ;-)
0
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
5 déc. 2006 à 22:12
Salut.

Il y a aussi une astuce pour faire ca en php :
php verifier une adresse electronique format du mail

J'ai un truc pour vérifier si le domaine est bon, je le mettrais quand j'aurais le temps ;-)

a plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
6 déc. 2006 à 14:51
Moi , j'utilise ceci en PHP
 public static function checkemail($email)
  {
    // see http://www.devshed.com/c/a/PHP/Email-Address-Verification-with-PHP/2/
    // checks proper syntax
    if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email))
      {
	return false;
      }
    //DEBUG NO NETWORK
    //return true;
    // gets domain name
    list($username,$domain)=split('@',$email);
    // checks for if MX records in the DNS
    $mxhosts = array();

    if(!@getmxrr($domain, $mxhosts)) {
      // no mx records, ok to check domain
      if (!@fsockopen($domain,25,$errno,$errstr,30)) {
	return false;
      } else {
	return true;
      }
    } else {
      // mx records found
      foreach (@$mxhosts as $host) {
	if (@fsockopen($host,25,$errno,$errstr,30)) {
	  return true;
	}
      }
      return false;
    }
  }
0
Dans ce domaine j'ai découvert un service (par webservice, mais pour 50€/mois) qui permet d'aller un peu plus loin: non seulement il teste si l'adresse et le domaines sont corrects, mais en plus:
- il détecte les adresses mail jetables
- il détecte les adresses bidon (cequevousvoulez@yahoo.com, etc.)

Tout est précisé sur https://www.alamaille.com/
0