TESTER LA VALIDITÉ D'UN E-MAIL

cs_Jos Messages postés 128 Date d'inscription mardi 26 juin 2001 Statut Membre Dernière intervention 8 février 2005 - 27 mars 2002 à 22:29
hoby500 Messages postés 86 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 26 mai 2019 - 27 sept. 2010 à 10:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11824-tester-la-validite-d-un-e-mail

hoby500 Messages postés 86 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 26 mai 2019
27 sept. 2010 à 10:20
Dites les gars.

au lieu de copy(TmpS,a,1) vous faites mieux d'utiliser TmpS[a]

Puis, au lieu de :
for a:=1 to length(TmpS) do
begin
if pos(copy(TmpS,a,1),accept) < 0 then Result := False
end;

je propose :

Email_Bon := True; // j'assume que c'est bon
for a:=1 to length(TmpS) do
if pos(TmpS[a],accept) = 0 then
begin
Email_Bon := False; // je suis sûr que c'est pas bon
Break // je quitte la boucle
end;

// Pour vérifier la présence du point au delà du @ :
if Email_Bon then
begin
s:=Email; Delete(s, 1, pos('@', s));
if pos('.', s)=0 then Email_Bon := false
end
bloodfox Messages postés 1 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 22 mai 2006
22 mai 2006 à 16:59
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;
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
25 nov. 2003 à 23:16
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 @.
fabiin Messages postés 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
25 nov. 2003 à 20:09
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
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
25 nov. 2003 à 17:54
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.
cs_Jos Messages postés 128 Date d'inscription mardi 26 juin 2001 Statut Membre Dernière intervention 8 février 2005
28 mars 2002 à 23:35
Voici un lien intéressant, à propos des expressions régulières.
cs_Jos Messages postés 128 Date d'inscription mardi 26 juin 2001 Statut Membre Dernière intervention 8 février 2005
27 mars 2002 à 22:29
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???
Rejoignez-nous