}
public static void checkGoodEmail(final String input) throws BadInputException {
if (input == null) {
throw new BadInputException("Sorry, null string is not a good email.");
}
int atIndex = input.indexOf('@');
int dotIndex = input.lastIndexOf('.');
if (atIndex == -1 || dotIndex == -1 || atIndex >= dotIndex) {
throw new BadInputException("Error: '" + input + "' is not a valid email value. Please try again.");
}
// now check for content of the string
byte[] s = input.getBytes();
int length = s.length;
byte b = 0;
for (int i = 0; i < length; i++) {
b = s[i];
if (b >= 'a' && b <= 'z') {
// lower char
} else if (b >= 'A' && b <= 'Z') {
// upper char
} else if (b >= '0' && b <= '9' && i != 0) {
// numeric char
} else if ( ( b=='_' || b=='-' || b=='.' || b=='@' ) && i != 0 ) {
// _ char
} else {
// not good char, throw an BadInputException
throw new BadInputException(input + " is not a valid email. Reason: character '" + (char)b + "' is not accepted in an email.");
}
}// for
// last check
try {
new javax.mail.internet.InternetAddress(input);
} catch (Exception ex) {
logger.error("Error when running checkGoodEmail", ex);
throw new BadInputException("Assertion: dont want to occur in Util.checkGoodEmail");
}
}