bonjour,
Est ce qu'il existe un petite routine qui pourrait tester la validite d'une adresse mail (qui de type chaine)
je voudrais etre sur que l'adresse comporte le sigle @ et au moins un '.' et que les caractère interdit soient absent ?
merci
bonjour,
Est ce qu'il existe un petite routine qui pourrait tester la validite d'une adresse mail (qui de type chaine)
je voudrais etre sur que l'adresse comporte le sigle @ et au moins un '.' et que les caractère interdit soient absent ?
merci
salut
regarde du cote des "regular expression"
@+ Phil
Si tu veux faire simple et n'utiliser que la RTL delphi, tu peux jouer avec MatchesMask (http://delphi.about.com/library/rtl/...atchesMask.htm)
Par exemple pour la validité de l'adresse :
Par contre c'est limité et effectivement tu ne peux pas trop vérifier si il n'y a pas de caractères interdits de manière simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MatchesMask(adresse, '*@*.[A-Z][A-Z][A-Z]')
Je te renvois sur une page de la faq : http://delphi.developpez.com/faq/?page=regex
bonjour,
merci pour les infos
je vais voir du cote de ce site
http://regexpstudio.com/TRegExpr/TRegExpr.html
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 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 c:=0; for b:=1 to length(accept) do if copy(TmpS,a,1) = copy(accept,b,1) then c:=1; if c=0 then Result :=false; end; //test compte '@' = 1 b:=0; for a:=1 to length(TmpS) do if copy(TmpS,a,1) = '@' then b:=b+1; if b <> 1 then Result := False; //test compte '.' = 0 if pos('.',TmpS) = 0 then Result := false; end;
Je vous propose la solution suivante :
1) Vérifier qu'il n'y a qu'un @
2) Tester la partie à droite du @ qui doit être un domaine valide avec NS lookup par exemple (voir à ce sujet l'excellente suite de composants gratuits ICS de François Piette)
3) Tester la partie à gauche du @ me parait délicate :
- soit faire un test de validité via la RFC http://www.ietf.org/rfc/rfc0822.txt mais cela me paraît compliquer
- soit envoyer un mail à l'adresse indiquée (sachant que le point 2) est validé) : si n'y a pas de retour négatif l'e-mail est correct !
@Coussati
Ok, sauf que looping ne veut sans doute pas envoyer un mail de test !
Ce que je propose c'est de considérer que si les règles 1) et 2) de ma solution sont vérifiées alors il y a une forte chance que le mail soit correct mais c'est pas du 100% je te l'accorde tout de suite.
De mon point de vue la seule méthode sûre à 100% c'est d'envoyer un mail de test mais ce mail de test peut être gênant. Ou bien il faudrait utiliser la logique de certains forums qui envoient un premier mail d'activation.
salut
pour les expression reguliere
@+Phil
Code : Sélectionner tout - Visualiser dans une fenêtre à part ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
en même temps, j'ai posté une fonction qui semble faire l'affaire
salut
il manque un test sur la longueur de l'extension (2.. 4) ex = toto@toto.t (Faux)
le test du point est faux toto.toto@toto.to (VRAI)
ton test n'est pas assez discriminant mais bon c'est un bon debut
@+ Phil
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager