自定了一个合法邮箱规则,希望能帮助理解。代码如下:import java.util.Scannerpublic class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in)System.out.println("请输入一个邮箱地址:")String mail = sc.nextLine()/* 设定邮箱地址的合法规则,合法邮箱地址要求如下: (1)字符必须是英文或数字开始 (2)必须包含一个@ (3)@符号在. 符号前面 (4)以英文或数字结尾 */ //设置一个正则表达式 String reg = "[\\w]+@[\\w]+.[\\w]+"//告知此字符串是否匹配给定的正则表达式。if(mail.matches(reg)) {System.out.println("邮箱地址合法!")}else {System.out.println("邮箱地址不合法!")}}}这里主要是采用正则表达式的方式。
关于正则表达式,查看Pattern类和Matcher类。楼主可以可以到网上查看下相关资料。解释下上面的正则表达式String reg = "[\\w]+@[\\w]+.[\\w]+"\w 表示单词字符:[a-zA-Z_0-9],上面是两个反斜杆是因为反斜杆是转义字符 +号表示:出现一次或多次 ,所以[\\w]+意思就是一到多个单词字符(英文或数字)@ :直接表示@字符.:表示点字符综上所述。String reg = "[\\w]+@[\\w]+.[\\w]+"的意思就是 :一到多个字符 + @ + 一到多个字符 + 点 + 一到多个字符。正则表达式使用的好。
合法E-mail地址: 1. 必须包含一个并且只有一个符号“@” 2. 第一个字符不得是“@”或者“.” 3. 不允许出现“@.”或者.@ 4. 结尾不得是字符“@”或者“.” 5. 允许“@”前的字符中出现“+” 6. 不允许“+”在最前面,或者“+@”
首先使用java提供的格式类判断email是否格式有误,然后使用开源框架,验证邮箱是否有用,示例如下:
public static boolean checkEmail(String email) {if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
return false
}
String host = ""
String hostName = email.split("@")[1]
Record[] result = null
SMTPClient client = new SMTPClient()
try {
// 查找MX记录
Lookup lookup = new Lookup(hostName, Type.MX)
lookup.run()
if (lookup.getResult() != Lookup.SUCCESSFUL) {
return false
} else {
result = lookup.getAnswers()
}
// 连接到邮箱服务器
for (int i = 0 i < result.length i++) {
host = result[i].getAdditionalName().toString()
client.connect(host)
if (!SMTPReply.isPositiveCompletion(client.getReplyCode())) {
client.disconnect()
continue
} else {
break
}
}
//以下2项自己填写快速的,有效的邮箱
client.login("163.com")
client.setSender("[email protected]")
client.addRecipient(email)
if (250 == client.getReplyCode()) {
return true
}
} catch (Exception e) {
e.printStackTrace()
} finally {
try {
client.disconnect()
} catch (IOException e) {
}
}
return false
}
需要的jar支持:commons-net-2.2.jar,dnsjava-2.1.1.jar