Avatar billede ng-km Nybegynder
03. august 2004 - 20:59 Der er 11 kommentarer og
1 løsning

Validering af e-mail

Findes der en Java-klasse der er i stand til at validere en e-mail adresse. Evt. fra Java-mail pakken?
Avatar billede arne_v Ekspert
03. august 2004 - 21:03 #1
Du kan kalde javax.mail.internet.InternetAddress constructor og se om den
throws en javax.mail.internet.AddressException
Avatar billede arne_v Ekspert
03. august 2004 - 21:04 #2
Det er kun et syntax check - om en adresse er valid eller ej kan kun
afgøres ved at sende en email og checke om den når frem.
Avatar billede ng-km Nybegynder
03. august 2004 - 21:48 #3
Jeg har prøvet at lavet et check som du foreskriver, men kan det være rigtigt at den kan godtage en adresse som  .@d    Skal der ikke være mindst et punktum efter @?
Avatar billede arne_v Ekspert
03. august 2004 - 21:54 #4
Det test den laver er vist ikke meget værd.

Hvis du er på Java 1.4 eller nyere så var en regular expression test
måske løsningen.
Avatar billede ng-km Nybegynder
03. august 2004 - 22:01 #5
Jeg er så småt på vej i seng, men kigger lidt på det i morgen. Kan du forklare en, regular expression test, lidt nærmere? Jeg er på Java 1.4.1
Avatar billede arne_v Ekspert
03. august 2004 - 22:02 #6
private static Pattern p = Pattern.compile("((\\w+)|(\\w+\\.\\w+))@((\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+)|(\\w+\\.\\w+\\.<w+\\.\\w+))");
    public static boolean validEmail(String addr) {
        return p.matcher(addr).matches();
    }
Avatar billede arne_v Ekspert
03. august 2004 - 22:03 #7
System.out.println(validEmail("x"));
        System.out.println(validEmail("x@x"));
        System.out.println(validEmail("x@x.x"));
        System.out.println(validEmail("x@x.x.x"));
        System.out.println(validEmail("x.x@x.x.x"));
        System.out.println(validEmail("x.x.x@x.x.x.x"));

giver:

false
false
true
true
true
false

hvilket umiddelbart ikke ser helt forkert ud.

(du kan mene at den sidste er OK, men så skal du bare rette i regex'en)
Avatar billede fsconsult.dk Nybegynder
04. august 2004 - 07:10 #8
mail validering er en svær ting, da det dels kun er det der står efter @ der reelt kan valideres, og topdomænet bestemmer hvilke tegn der kan være i domænet. Ved faktisk ikke hvad der bestemmer hvilke tegn der kan være i subdomænet..
Avatar billede arne_v Ekspert
04. august 2004 - 07:15 #9
De fleste sites bruger løsningen med:
  - bed brugeren opgive en email adresse
  - lad være med at spille tid på at checke den
  - send en email med et link der skal klikkes på inden brugeren kan noget som helst

Det er nemlig effektivt !
Avatar billede fsconsult.dk Nybegynder
04. august 2004 - 07:23 #10
jeps ... det er effektivt, men kun når man skal opgive sin egen email adresse  ;-)
Avatar billede ng-km Nybegynder
05. august 2004 - 08:10 #11
OKAY, det er ikke sådan lige til, men arne_v kommer tæt på med sin regex, og så kan jeg jo selv konfigurere min egen mail-validering.

Læg et svar, så får du pointene arne_v.
Avatar billede arne_v Ekspert
05. august 2004 - 08:25 #12
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester