// --------------------------------------------------------------------------------------
protected 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");
}
}