 function verifEmail(mail) {

 /*** Début de déclaration de variable ***/
 //var de retour boolean true ou false
 var ret = true;
 //var où l'on stock le caractère courant au fur et a mesure de l'analyse
 var car = "";
 //var où l'on stock le caractère place avant le @
 var carAfter = "";
 //var où l'on stock le caractère place après le @
 var carBefore = "";
 //var où l'on stock le nombre de caractères total
 var nbrcar = mail.length;
 //var où l'on stock le nombre de @ trouvé
 var nbrarobase = 0;
 //var où l'on stock le nombre de . trouvé
 var nbrpoint = 0;
 //var définissant les caractères authorisés
 var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz";
 /*** Fin de déclaration de variable ***/

 /*** Début de boucle de l'analyse ***/
 for(cnt=0;cnt<nbrcar;cnt++) {

 //Récupération du caractère courant
 var car = mail.substr(cnt,1);

 /** Début de l'analyse du caractère courant **/
 //Si le caractère est authorisé
 if(goodcar.indexOf(car) >= 0) {

 //On initialise les variables carAfter et carBefore à vide
 carAfter = "";
 carBefore = "";

 /* Début de l'analyse du @ */
 //Si le caractère est @
 if(car == "@") {


 //Si le @ n'est pas le premier
 if((cnt-1) >= 0) {

 //Récupération du caractère placé avant le @
 carBefore = mail.substr((cnt-1),1);
 }

 //Si le @ n'est pas le dernier
 if((cnt+1)<nbrcar) {

 //Récupération du caractère placé après le @
 carAfter = mail.substr((cnt+1),1);
 }

 //Si toutes les condition de @ sont respectées
 //conditions:
 // - cnt>0 : n'est pas placé en première position
 // - nbrarobase==0 : est unique
 // - cnt<(nbrcar-4) : se trouve à une position max de 5 avant la fin
 // (sachant que les domaines les plus petit sont : a.fr par ex.)
 // - !(carBefore==".") : qu'il n'y est pas de . avant le @
 // - !(carAfter==".") : qu'il n'y est pas de . après le @
 // - !(carBefore=="-") : qu'il n'y est pas de - avant le @
 // - !(carAfter=="-") : qu'il n'y est pas de - après le @
 // - !(carBefore=="_") : qu'il n'y est pas de _ avant le @
 // - !(carAfter=="_") : qu'il n'y est pas de _ après le @
 if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {

 //On incrémente le @
 nbrarobase++;
 } else {

 //Affectation Faux à la var de retour
 ret = false;
 //On sort de la boucle
 break;
 }
 }
 /* Fin de l'analyse du @ */

 /* Début de l'analyse du . */
 //Si le caractère est .
 if(car == ".") {

 //Si le . n'est pas le premier
 if((cnt-1) >= 0) {

 //Récupération du caractère placé avant le .
 carBefore = mail.substr((cnt-1),1);
 }

 //Si le . n'est pas le dernier
 if((cnt+1)<nbrcar) {

 //Récupération du caractère placé après le .
 carAfter = mail.substr((cnt+1),1);
 }

 //Si toutes les condition de @ sont respectées
 //conditions:
 // - cnt>0 : n'est pas placé en première position
 // - cnt<(nbrcar-2) : se trouve à une position max de 3 avant la fin
 // (sachant que les domaines les plus petit sont : a.fr par ex.)
 // - !(carBefore==".") : qu'il n'y est pas de . avant le .
 // - !(carAfter==".") : qu'il n'y est pas de . après le .
 // - !(carBefore=="-") : qu'il n'y est pas de - avant le .
 // - !(carAfter=="-") : qu'il n'y est pas de - après le .
 // - !(carBefore=="_") : qu'il n'y est pas de _ avant le .
 // - !(carAfter=="_") : qu'il n'y est pas de _ après le .
 if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {

 //On incrémente le .
 nbrpoint++;
 } else {

 //Affectation Faux à la var de retour
 ret = false;
 //On sort de la boucle
 break;
 }
 }
 /* Fin de l'analyse du . */

 } else {

 //Affectation Faux à la var de retour
 ret = false;
 //On sort de la boucle
 break;
 }
 /*** Fin de l'analyse du caractère courant ***/
 }
 /*** Fin de boucle de l'analyse ***/

 /*** Début de l'analyse du nombre de @ et de . ***/
 //Si il n'y a aucun @ et aucun .
 //Si le 1er et le dernier caractère est .
 //Si le 1er et le dernier caractère est -
 //Si le 1er et le dernier caractère est _
 if(nbrarobase == 0 || nbrpoint == 0 || mail.substr(0,1) == "." || mail.substr(0,1) == "-" || mail.substr(0,1) == "_" || mail.substr((nbrcar-1),1) == "." || mail.substr((nbrcar-1),1) == "-" || mail.substr((nbrcar-1),1) == "_") {

 //Affectation Faux à la var de retour
 ret = false;
 }
 /*** Fin de l'analyse du nombre de . et de @ ***/

 //Renvoi de la valeur de la var de retour
 return ret;
 }
 /**** Fin de fonction : verifEmail ****/ 
