Detection de bonne adresse email

hubert -  
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   12
 
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
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   Statut Membre Dernière intervention   12 > ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223 > Yelowwclo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
'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
amel
 
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   Statut Membre Dernière intervention   1 011
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1 011 > Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
ah oui c est tout à fait exact et je me suis donc bien planté sur ce coup
désolé sincerement
0
hubert
 
merci beaucoup c'est exactement ce que je cherchais !
a une prochaine (je debute..) ;-)
0
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   825
 
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   Statut Modérateur Dernière intervention   934
 
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
jjlh
 
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