Valider une adresse email - Java - Programmation
Marsh Posté le 15-09-2004 à 14:29:27
tu envoies un mail avec le mot-de-passe dedans ?
J'espère que tu enregistres ton fichier à la cnil.
Marsh Posté le 15-09-2004 à 14:30:11
Pkoi t'essaies pas bêtement d'ouvrir une socket sur le port smtp de l'adresse, pour voir?
Marsh Posté le 15-09-2004 à 14:31:29
gfive a écrit : Pkoi t'essaies pas bêtement d'ouvrir une socket sur le port smtp de l'adresse, pour voir? |
parce que le MX peut etre une autre machine
Marsh Posté le 15-09-2004 à 14:31:46
tu cherches dnsjava peut-etre ?
Edit: http://www.dnsjava.org/
Marsh Posté le 15-09-2004 à 14:32:08
lorill a écrit : parce que le MX peut etre une autre machine |
Ah ouais, spas con!
Marsh Posté le 15-09-2004 à 14:37:01
d4rK 3Mpr0R a écrit : tu envoies un mail avec le mot-de-passe dedans ? |
Non, l'utilisateur saisi une adresse email. Elle n'est utilisée que pour lui confirmer que son message (saisi par ailleur) est bien arrivé.
[citation]J'espère que tu enregistres ton fichier à la cnil.[/citation]
Oui.
Je voudrais bien mettre en place un système d'inscription avec génération de MDP pour éviter les abus, mais ça sort du cahier des charges
De toute façon, c'est ça le problème. Ce que je cherche, c'est vérifier que le domaine a bien un serveur mail.
Marsh Posté le 15-09-2004 à 14:38:02
gfive a écrit : Ah ouais, spas con! |
Et avec certain domaines, y'a pas d'adresse IP par défaut...
Marsh Posté le 15-09-2004 à 14:55:26
lorill a écrit : tu cherches dnsjava peut-etre ? |
Merci.
En cours de test...
Marsh Posté le 15-09-2004 à 16:23:00
Bon, ça marche a condition de lui fournir un Resolver (Serveur DNS).
En fait faut croire que ça n'existe pas en standard dans Java. Quand on regarde le code de dnsjava, on vois qu'il lance une commande system qui dépend de l'OS :
ipconfig sous WIN NT,
winipcfg sous WIN 95,
ou bien il lit le fichier /etc/resolv.conf sous unix.
Bref, je trouve ça zarb...
Sur ma machine de dev (XP pro), ça marche pas tout simplement parce-qu'il cherche des chaînes du genre :
- Host Name
- Primary Dns Suffix
- DNS Suffix
- DNS Servers
Malheureusement, mon XP est en français et ipconfig cause pas en English !
Bon, c'est pas grâve, on va ajouter une propriété de plus dans les fichiers de conf de l'appli
Marsh Posté le 15-09-2004 à 19:02:46
Mara's dad a écrit : Tout d'abord, j'utilise InternetAddress.parse( strEMailAddress ) qui vérifie la validité de l'adresse selon la RFC822. |
Petite parenthèse :
Contrairement à ce que la doc laisse croire, cette classe ne suit que *certaines* règles RFC822. Tu peux entrer pas mal de truc pas valide sans que ça bronche.
Marsh Posté le 15-09-2004 à 21:11:06
Jubijub a écrit : elle est où la regexp de 3 pages qui valide selon cette rfc déjà ? |
C'est une regex assez monstrueuse.
En plus, je suis tombé sur des comportements un peu bizarre d'une librairie regex de jakarta - je dois encore investiguer - ce qui fait que tu ne peux pas te contenter de taper une regex toute faite sans vérifier.
Disons que pour la plupart des applications "business", je ne pense pas que RFC822 soit vraiment nécessaire. En général, c'est plutôt un superset de ce RFC dont on a besoin, car un tas d'adresses valides selon RFC822 ne sont communément pas acceptables sur un form web.
Marsh Posté le 15-09-2004 à 21:11:23
lorill a écrit : les expressions rationnelles, c'est pour les faibles |
Marsh Posté le 15-09-2004 à 21:22:00
ReplyMarsh Posté le 15-09-2004 à 21:37:57
d4rK 3Mpr0R a écrit : débarquez-le bordel. |
regular = rationnel ? Intéressant. I'm sorry but my French is not that fluent.
T'es bien gentil de fournir une recherche google; je ne mettais pas en doute ton utilisation du terme qui est tt à fait reconnu mais bien le terme lui-même. "Traduction erronée" en Français dit-on. Je me demande si le terme original est lui-même bien indiqué.
ALORS CALMOS.
Enfin, c'est pour éviter ce genre de trucs que je préfère les termes techniques en english (j'adore à ce propos l'imagination débordante des francophones, surtout des Français, pour tout traduire).
Fin de la parenthèse.
Marsh Posté le 15-09-2004 à 21:46:02
sircam a écrit : |
JE T'EMMERDE.
et je te signale au passage que les maths sont une des dernières disciplines où les articles fondementaux sont encore publiés dans la langue d'origine de l'auteur, comme la France est à la pointe, c'est un des plus gros vecteur du français dans le monde scientifique.
Marsh Posté le 15-09-2004 à 21:50:38
sircam a écrit : Petite parenthèse : |
M'en tape
La spec que je doit appliquer dis que l'adresse doit être de la forme :
XXXX@XXXX.XXX
Si je l'applique, je me demande combien d'adresses ne passeront pas
Donc InternetAddress.parse() me suffit.
Trouvez-moi donc une classe capable d'interroger un DSN de manière simple, parce-que dsnjava c'est quand même un gros morceau pour ce que j'ai à faire.
Marsh Posté le 15-09-2004 à 22:51:21
d4rK 3Mpr0R a écrit : JE T'EMMERDE. |
Espèce de petit prétentieux pédant et malpoli. Et chauvin de surcroit. Heureusement que tous les pays ne font pas de même.
Tu utilises ton vocabulaire comme bon te semble et je ferai de même.
En tout état de cause, la politesse élémentaire est de rigueur sur ce forum. J'espère avoir été particulièrement clair sur ce point.
Marsh Posté le 15-09-2004 à 22:54:04
Mara's dad a écrit : M'en tape |
Tu peux pas te faire une chtite classe qui intérrige le serveur?? Ca doit pas être super compliqué, d'interroger un DNS, si?
Marsh Posté le 15-09-2004 à 22:56:07
Mara's dad a écrit : M'en tape |
InternetAddress autorise une adresse telle que "sircam", qui ne répond pas à ta spec.
Marsh Posté le 15-09-2004 à 22:57:31
sircam a écrit : Espèce de petit prétentieux pédant et malpoli. Et chauvin de surcroit. Heureusement que tous les pays ne font pas de même. |
et gros et feignasse aussi. mais qui t'emmerde d'une force hallucinante.
Et qui sait faire du google aussi.
Quand à la politesse, tu as ouvert les hostilités.
Qu'on sache pas quelquechose, ça arrive, je passe ma vie dans google, mais qu'on sache pas chercher et qu'on envoie chier celui qui donne l'info, ça me fout hors de mes gonds.
Marsh Posté le 15-09-2004 à 23:08:39
d4rK 3Mpr0R a écrit : et gros et feignasse aussi. mais qui t'emmerde d'une force hallucinante. |
Je vois que tu persiste dans la trivialité. Je ne comprends pas non plus ton agressivité.
Et désolé, je n'ai été impoli à aucun moment. Mon emoticon :belgarath était en réponse à "les expressions rationnelles, c'est pour les faibles "; post qui ne constituait pas un élément de solution et à propos duquel je n'ai fait qu'exprimer ma désaprobation pour une traduction.
Je comprends aussi que tu fustiges les critiques gratuites, mais cela ne s'applique pas au cas d'espèce. Je te propose de relire calmement mes posts et mes explications.
Si ton animosité à mon égard persiste, je suggère que tu m'en fasse part en MP pour ne pas continuer à polluer ce thread plus avant, ou tout simplement d'en rester là.
Marsh Posté le 15-09-2004 à 23:39:16
ReplyMarsh Posté le 16-09-2004 à 11:11:59
sircam a écrit : InternetAddress autorise une adresse telle que "sircam", qui ne répond pas à ta spec. |
C'est vrai
Bon, c'est pas grâve, je vais la repasser par ma petit regex préférée avant alors.
Sinon, ce serait cool si vous alliez vous écharper ailleurs.
C'est un topic respectable içi
Marsh Posté le 16-09-2004 à 11:16:21
gfive a écrit : Tu peux pas te faire une chtite classe qui intérrige le serveur?? Ca doit pas être super compliqué, d'interroger un DNS, si? |
Si, c'est compliqué
C'est pas simple comme une requête HTTP. Y'a plein de params en binaire, et faut décoder les réponses.
Regarde le source de dnsjava, tu va comprendre.
Sinon y'a aussi les RFC1034 et RFC1035 .
Marsh Posté le 16-09-2004 à 11:36:49
benou a écrit : nraynaud> ta gueule |
sa gueule à l'autre aussi hein
Marsh Posté le 16-09-2004 à 11:40:21
the real moins moins a écrit : sa gueule à l'autre aussi hein |
j'en ai marre de voir les "vieux" insulter ou envoyer bouler tout le monde à tout vas.
ca devient n'importe quoi ...
Marsh Posté le 16-09-2004 à 11:43:09
Mara's dad a écrit : Si, c'est compliqué |
j'ai pôs l'temps, là maintenant, mais bon, je te crois sur parole!
Marsh Posté le 16-09-2004 à 11:48:18
benou a écrit : j'en ai marre de voir les "vieux" insulter ou envoyer bouler tout le monde à tout vas. |
Ca vole effectivement assez bas et dans tous les sens. C'est pas un salon de thé ici, mais y'a un minimum à respecter et des limites à ne pas dépasser.
M'enfin tant que les habitués s'insultent entre eux...
Marsh Posté le 16-09-2004 à 11:52:11
benou a écrit : j'en ai marre de voir les "vieux" insulter ou envoyer bouler tout le monde à tout vas. |
roh mais ta gueule hein
.. t'as raison. on passe nos nerfs de nerdz
Marsh Posté le 16-09-2004 à 11:52:20
the real moins moins a écrit : sa gueule à l'autre aussi hein |
Coucou
T'as rien d'autre à dire
Sur le sujet, bien entendu
Marsh Posté le 16-09-2004 à 11:53:40
si: le truc de jaf que tu utilises, je l'ai laissé tomber parce que 1/ j'ai trouvé le code tout moisi 2/ ça me foutait une dependence sur ce gros jar juste pour valider une email.
j'ai fini par m'en sortir avec une pauvre regex.
apres si le mail arrive pas à destination bah c'est qu'il etait pas valide, tant pis pour l'user
Marsh Posté le 16-09-2004 à 11:54:50
Du grain à moudre :
^[\\w_.-]+@[\\w_.-]+\\.[\\w]+$
C'est ce que j'utilise pour me conformer à la spec avec org.apache.oro.text.regex.
Marsh Posté le 16-09-2004 à 11:55:24
donc si on parle de mot de passe/validation de compte et ce genre de truc, un bon systeme c'est peut etre l'envoi d'un mail avec un lien vers une page qui va "activer/valider" le compte en question, non?
je l'ai vu faire sur plusieurs sites, ça marche bien... la page en question a un parametre genre hash, et n'est valide qu'un certain temps..
maintenant j'ignore tout de ton contexte...
Marsh Posté le 16-09-2004 à 11:56:08
the real moins moins a écrit : si: le truc de jaf que tu utilises, je l'ai laissé tomber parce que 1/ j'ai trouvé le code tout moisi 2/ ça me foutait une dependence sur ce gros jar juste pour valider une email. |
Je l'utilise pas
Marsh Posté le 16-09-2004 à 11:56:19
Reply
Marsh Posté le 15-09-2004 à 14:26:54
Bonjour,
Je cherche à valider une adresse email saisie.
Tout d'abord, j'utilise InternetAddress.parse( strEMailAddress ) qui vérifie la validité de l'adresse selon la RFC822.
Ensuite, je récupère le nom de domaine et dans l'absolu je cherche à savoir si il existe un serveur de mail pour ce domaine.
Ca je ne sais pas faire du tout
Pour le moment, je me contente de vérifier avec InetAddress.getAllByName( strHost ) que le nom existe. Mais cette méthode ne fait que vérifier l'existance d'une adresse IP affecté par défaut au nom de domaine. Si je ne trouve pas, j'essaye avec
InetAddress.getAllByName( "www." + strHost ). C'est quand même du bricolage de haut vol mais j'ai pas mieux.
Z'avez pas, dans vot' chapeau, une classe qui permet de récupérer les infos DNS d'un domaine ?
Genre l'équivalent d'un : "host -t MX domainName" ou "dig domainName MX"
PS : faut que ça marche en Java 1.3 !
---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.