begin process at 2010 02 10 12:01:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > TESTER LA VALIDITÉ D'UN E-MAIL

TESTER LA VALIDITÉ D'UN E-MAIL


 Information sur la source

Note :
7 / 10 - par 4 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Niveau :Débutant Date de création :27/03/2002 Date de mise à jour :27/03/2002 22:02:59 Vu :5 148

Auteur : fabiin

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Fonction permettant de tester si un e-mail a un format valide (a peu près)

renvoi true si l'mail est bon false si il est faux

Source

  • function TestMail(EMail:string):boolean;
  • var
  • a,b,c:integer;
  • TmpS,accept:string;
  • begin
  • TmpS := lowercase(EMail);
  • Result := True;
  • accept := 'abcdefghijklmnopqrstuvwxyz0123456789-@._~'; //caractères acceptés
  • //test caractères non acceptés
  • for a:=1 to length(TmpS) do begin //Pour chaque caractère de l'e-mail
  • c:=0;
  • for b:=1 to length(accept) do //si il est pas dans la liste des acceptés
  • if copy(TmpS,a,1) = copy(accept,b,1) then c:=1;
  • if c=0 then Result :=false; //c pas bon
  • end;
  • //test compte '@' = 1
  • b:=0;
  • for a:=1 to length(TmpS) do //pour tous les caractères
  • if copy(TmpS,a,1) = '@' then b:=b+1; //si il trouve @ il ajoute 1
  • if b <> 1 then Result := False; //comme il faut un seul @,
  • //si il en trouve plusieurs c pas bon
  • //test compte '.' = 0
  • if pos('.',TmpS) = 0 then Result := false; //si ya 0 '.' dans l'email c pas bon
  • end;
function TestMail(EMail:string):boolean;
var
 a,b,c:integer;
 TmpS,accept:string;
begin


  TmpS := lowercase(EMail);
  Result := True;
  accept := 'abcdefghijklmnopqrstuvwxyz0123456789-@._~'; //caractères acceptés

  //test caractères non acceptés
  for a:=1 to length(TmpS) do begin                  //Pour chaque caractère de l'e-mail
    c:=0;
    for b:=1 to length(accept) do                    //si il est pas dans la liste des acceptés
     if copy(TmpS,a,1) = copy(accept,b,1) then c:=1;
    if c=0 then Result :=false;                      //c pas bon
  end;

  //test compte '@' = 1
  b:=0;
  for a:=1 to length(TmpS) do                        //pour tous les caractères
    if copy(TmpS,a,1) = '@' then b:=b+1;             //si il trouve @ il ajoute 1
  if b <> 1 then Result := False;                    //comme il faut un seul @,
                                                     //si il en trouve plusieurs c pas bon
  //test compte '.' = 0
  if pos('.',TmpS) = 0 then Result := false;         //si ya 0 '.' dans l'email c pas bon

end; 

 Conclusion

TestMail('machin@serveur.com') renvera true
TestMail('tralala') renvera false
TestMail('machin@serveur@com') renvera false
TestMail('##//Waza\\ {...}@bidule.com') renvera false


 Sources du même auteur

Source avec Zip CAPTUER LE SON SORTANT ET L'ENREGISTRER DANS UN FICHIER WAV
CALCUL D'UNE MOYENNE
CHANGER LA DURÉE D'AFFICHAGE DES BULLES D'AIDES (HINT)
Source avec Zip Source avec une capture ASCII-T : PETIT SOFT D'ASCII ART.
CHANGER CONTRASTE / LUMINOSIT&#201; (L'ALGORITHME)

 Sources de la même categorie

Source avec Zip Source avec une capture WEBDEZIGN FORMULAIRE par craftsystem
Source avec Zip Source avec une capture GESTION DE CALENDRIER DYNAMIQUE par docfullspeed
Source avec Zip APPARITION PROGRESSIVE D'UNE FENÊTRE par wolf691300
Source avec une capture UN CADRE CONTENANT UN NAVIGATEUR TYPE MAGNÉTOSCOPE par speletux
Source avec Zip LOGICIEL POUR GÉNÉRER UNE CLASSE DELPHI par hudsonhawk3

Commentaires et avis

Commentaire de Jos le 27/03/2002 22:29:47

N'y a-t-il pas de la gestion d'expressions régulières, en Delphi, qui pourrait facilité une telle validation???

Comme RegExp enVBScrip et JSScrip ou =~ en Perl???

Commentaire de Jos le 28/03/2002 23:35:41

Voici un lien intéressant, à propos des expressions régulières.

Commentaire de stailer le 25/11/2003 17:54:22

Y a un email qui m'a fait planter mon système de newsletter :

nom.prenom@libertysurf

Et oui, mon ptit gars, il y a bien un . et un @ maisle problème est qu'il n'y a pas de . après le nom du provider... Et ca le serveur aime pas.

Donc suggestion : Il faudrait que ta source vérifie s'il y a bien ce fameux point.

Commentaire de fabiin le 25/11/2003 20:09:36

ca le fai normalement
regarde a la fin du source :
if pos('.',TmpS) = 0 then Result := false;       //si ya 0 '.' dans l'email c pas bon

Commentaire de stailer le 25/11/2003 23:16:54

Ah oui, s'il n'y a pas un '.' quelque part dans l'email c'est pas bon. Seulement ca ne dit pas OU dans l'email.
Or, pour ne pas avoir d'erreur il faut vérifier qu'il y ait un '.' APRES le @.

Commentaire de bloodfox le 22/05/2006 16:59:35

Je me suis permis d'adapter un peu ce code

  //Test des caractères non acceptés
  for a:=1 to length(TmpS) do
  begin
    if pos(copy(TmpS,a,1),accept) < 0 then
      Result := False
  end;
  //Test du nombre de @
  b:=0;
  for a:=1 to length(TmpS) do //pour tous les caractères
  if copy(TmpS,a,1) = '@' then b:=b+1; //si il trouve @ il ajoute 1
  if b <> 1 then
    Result := False;
  //Test . ou @ qui se suivent
  for a:=1 to length(TmpS) do //pour tous les caractères
  if ( (copy(TmpS,a,1) = '@')  or  (copy(TmpS,a,1) = '.') ) and
     ((copy(TmpS,a+1,1) = '@') or (copy(TmpS,a+1,1) = '.')) then
        Result := False;
  //Test . ou @ en premier ou dernier caractere
  if (copy(TmpS,1,1) = '@') or (copy(TmpS,1,1) = '.') or
     (copy(TmpS,length(TmpS),1) = '@') or (copy(TmpS,length(TmpS),1) = '.') then
        Result := False;
  //Test présence d'un . après le @
  if pos('.',copy(TmpS,pos('@',TmpS)+1,length(TmpS)-pos('@',TmpS)-1)) = 0 then
        Result := false;

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales