Vérification d'une adresse e-mail [Résolu]

Signaler
Messages postés
48
Date d'inscription
dimanche 14 août 2005
Statut
Membre
Dernière intervention
12 septembre 2009
-
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Quelqu'un a-t'il une fonction qui permette de vérifier sir une
adresse mail est valide (sans vérifier qu'elle existe réellement) ?



Merci.

@+, Kaneda Shotaro

10 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Essaie sans recopier dans un autre buffer, c'est inutile.

char *c = szmail;

partant de là suffit d'vancer le pointeur tant que != [mailto:'@' '@']. Si tu atteins le null final alors pas bon sinon tu regardes de combiens tu as avancé: if(2 > (c - szmail)) return 0;

idem pour la suite.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Définis d'abord la règle de vérification:
- caractères interdits et/ou à quelle place.
- 1 [mailto:'@' '@'] et précédée et suivie de quoi.
- etc...

ciao...
BruNews, MVP VC++
Messages postés
48
Date d'inscription
dimanche 14 août 2005
Statut
Membre
Dernière intervention
12 septembre 2009

Ok mais si quelqu'un avait une fonction toute faite ça m'aiderait bien...


@+, Kaneda Shotaro
Messages postés
127
Date d'inscription
mardi 23 août 2005
Statut
Membre
Dernière intervention
9 mai 2011

Salut, je ne sais pas si c'est correct, mais essay ça :
int Recherche(char* Mail)
{
int iMail = strlen(Mail); iAt 0; // 1 @
if( Mail[iMail-3]!='.' OR Mail[iMail-2]!='.' ) // si pas d'extension du DNS .com ou .fr
return 1;
for(int i=0;i<(iMail-4);i++)
if( Mail[i] == [mailto:'@' '@'] AND iAt == 0 )
iAt = 1;
if( iAt = 0 ) return 2;
return 0;
}
Messages postés
48
Date d'inscription
dimanche 14 août 2005
Statut
Membre
Dernière intervention
12 septembre 2009

J'ai réalisé cette fonction. Si quelqu'un peut me dire ce qu'il en pense... Je débute en C++.

Merci



bool EMailIsValid(char *AdresseMail)

{

char *Caractere;

int ch = '@';

int TailleLogin;

char string[MAX_PATH];

sprintf_s(string, MAX_PATH, "%s", AdresseMail);

Caractere = strchr(string, ch);

if (Caractere NULL) // Test du symbole arobase (@)> Il doit être présent

return FALSE;

TailleLogin = (strlen(string) - strlen(Caractere));

if (TailleLogin < 2) // Si le login contient moins de 2 caractères l'adresse est fausse

return FALSE;

ch = ' ';

Caractere = strchr(string, ch);

if (Caractere !NULL) // Test du symbole espace ( )> Il doit être absent

return FALSE;

ch = '.';

Caractere = strrchr(string, ch);

if (Caractere == NULL) // Test du
symbole point (.) => Il doit être présent en fin d'adresse

return FALSE;

if (strlen(Caractere) > 4) // S'il y a plus de 4
caractères après le dernier point alors l'adresse n'est pas valide

return FALSE;

if ((strlen(string) - (TailleLogin +
strlen(Caractere))) <= 2) // Un nom de domaine a
toujours plus d'un caractère

return FALSE;

return TRUE;

}

@+, Kaneda Shotaro
Messages postés
48
Date d'inscription
dimanche 14 août 2005
Statut
Membre
Dernière intervention
12 septembre 2009

Pour Dark_Naruto25 :

J'ai du adapter ton code pour que ça compile (j'ai Visual Studio 2005 beta) :

int Recherche(char* Mail)

{

int iMail = strlen(Mail);

int iAt 0; // 1 @

if((Mail[iMail-3]!='.') | (Mail[iMail-2]!='.')) // si pas d'extension du DNS .com ou .fr

return 1;

for(int i=0;i<(iMail-4);i++)

if ((Mail[i] == '@')&(iAt == 0))

iAt = 1;

if( iAt == 0 )

return 2;

return 0;

}

Et bizzarement après plusieurs test le résultat est toujours le même : 1



Pour BruNews :

Merci, je vais modifier mon code et voir ça. Je mettrais ici le résultat pour les corrections !

@+, Kaneda Shotaro
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Mieu vaut aller voir une des rfc avant de le faire.
Là je suis sur un verificateur d'adresse email évolué en C sans utiliser les regex , je vais t'envoyer les sources dés que je fini.
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
J'ai oublier d'ajouter: le tout sans utiliser la moindre lib, sauf pour tester avec le printf(), sinon strlen() strcpy()... tout fait maison.
Messages postés
48
Date d'inscription
dimanche 14 août 2005
Statut
Membre
Dernière intervention
12 septembre 2009

J'attends avec impatience ! Merci.

@+, Kaneda Shotaro
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



[auteurdetail.aspx?ID=195941 ]juki webmaster
> Est ce que tu aurais un numéro de rfc ou l'on peut trouver
comment est constitué une adresse mail ?



Merci,

Matt...