Here is the code for a Validator class:
package com.devdaily.opensource.web.util; import javax.mail.internet.InternetAddress; import javax.mail.internet.AddressException; import java.util.StringTokenizer; public class Validator { public static boolean isValidEmailAddress(String emailAddress) { // a null string is invalid if ( emailAddress == null ) return false; // a string without an @ symbol is an invalid email address if ( emailAddress.indexOf("@") < 0 ) return false; // a string without an @ symbol is an invalid email address if ( emailAddress.indexOf(".") < 0 ) return false; if ( lastEmailFieldTwoCharsOrMore(emailAddress) == false ) return false; try { InternetAddress internetAddress = new InternetAddress(emailAddress); System.err.println( "Address is GOOD: " + emailAddress ); return true; } catch (AddressException ae) { System.err.println( "Address is BAD: " + emailAddress ); return false; } } /** * Returns true if the last email field (i.e., the country code, or something * like .com, .biz, .cc, etc.) is two chars or more in length, which it really * must be to be legal. */ private static boolean lastEmailFieldTwoCharsOrMore(String emailAddress) { StringTokenizer st = new StringTokenizer(emailAddress,"."); String lastToken = null; while ( st.hasMoreTokens() ) { lastToken = st.nextToken(); } if ( lastToken.length() >= 2 ) { return true; } else { return false; } } }
Here is the code for the EmailAddressValidatorTests class: package com.devdaily.opensource.web.utilTest;
import junit.framework.*; import com.devdaily.opensource.web.util.Validator; public class EmailAddressValidatorTests extends TestCase { /** * Set up work to be done before test cases. */ protected void setUp() { } /** * do a tear down after each test */ protected void tearDown() { } public void testAla() { String address = "ala@missiondata.com"; boolean expectedResult = true; boolean actualResult = Validator.isValidEmailAddress(address); assert( "\ntestAla, EXPECTED: " + expectedResult + ", GOT: " + actualResult, (expectedResult==actualResult) ); } public void testBlank() { String address = ""; boolean expectedResult = false; boolean actualResult = Validator.isValidEmailAddress(address); assert( "\ntestBlank, EXPECTED: " + expectedResult + ", GOT: " + actualResult, (expectedResult==actualResult) ); } public void testNull() { String address = null; boolean expectedResult = false; boolean actualResult = Validator.isValidEmailAddress(address); assert( "\ntestBlank, EXPECTED: " + expectedResult + ", GOT: " + actualResult, (expectedResult==actualResult) ); } public void testYan() { String address = "yanf@md.com"; boolean expectedResult = true; boolean actualResult = Validator.isValidEmailAddress(address); assert( "\ntestYan, EXPECTED: " + expectedResult + ", GOT: " + actualResult, (expectedResult==actualResult) ); } public void testAtSymbols() { assert( "\ntestAtSymbols1", !Validator.isValidEmailAddress("@") ); assert( "\ntestAtSymbols2", !Validator.isValidEmailAddress("@devdaily") ); assert( "\ntestAtSymbols3", !Validator.isValidEmailAddress("@devdaily.com") ); assert( "\ntestAtSymbols4", !Validator.isValidEmailAddress(" @devdaily.com") ); assert( "\ntestAtSymbols5", !Validator.isValidEmailAddress("al @devdaily.com") ); assert( "\ntestAtSymbols6", !Validator.isValidEmailAddress("@devdaily .com") ); assert( "\ntestAtSymbols7", !Validator.isValidEmailAddress("@devdaily. com") ); assert( "\ntestAtSymbols8", !Validator.isValidEmailAddress("al@devdaily") ); assert( "\ntestAtSymbols9", !Validator.isValidEmailAddress("al@ devdaily") ); } public void testSingleName() { assert( "\ntestSingleName1", !Validator.isValidEmailAddress("al") ); assert( "\ntestSingleName2", !Validator.isValidEmailAddress("frankenstein") ); } public void testlongBlank() { assert( "\ntestlongBlank1", !Validator.isValidEmailAddress(" ") ); assert( "\ntestlongBlank2", !Validator.isValidEmailAddress(" ") ); assert( "\ntestlongBlank3", !Validator.isValidEmailAddress(" ") ); } public void testCrazyStuff() { assert( "\ntestCrazyStuff1", !Validator.isValidEmailAddress(".@") ); assert( "\ntestCrazyStuff2", !Validator.isValidEmailAddress("@.") ); assert( "\ntestCrazyStuff3", !Validator.isValidEmailAddress("@.@.@.@.") ); assert( "\ntestCrazyStuff4", !Validator.isValidEmailAddress("a@b.c") ); assert( "\ntestCrazyStuff5", !Validator.isValidEmailAddress("alvinjalexander@yahoo.c") ); assert( "\ntestCrazyStuff6", !Validator.isValidEmailAddress("@@@.cc") ); assert( "\ntestCrazyStuff7", !Validator.isValidEmailAddress("ala@orange@missiondata.com") ); } public void testIpAddresses() { //assert( "\ntestIpAddresses", Validator.isValidEmailAddress("chriss@127.0.0.1") ); } public static void main(String args[]) { junit.textui.TestRunner.run(EmailAddressValidatorTests.class); } public EmailAddressValidatorTests(String name) { super(name); } /** * add one line here for each test in the suite */ public static Test suite() { TestSuite suite = new TestSuite(); // run tests manually //suite.addTest( new ValidatorTests("testNumericAddress1") ); //return suite; // or, run tests dynamically return new TestSuite(EmailAddressValidatorTests.class); } }