首先使用java提供的格式類判斷email是否格式有誤,然后使用開源框架,驗證郵箱是否有用,示例如下:
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的菏澤網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
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("sxgkwei@163.com");
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
import?org.apache.log4j.Logger;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
public?class?Demo?{
public?static?void?main(String[]?args)?{
if(Resource.isEmail("1212@ss.cn")){
System.out.println("1212@ss.cn這個郵箱是合法的!");?
??}else{
??System.out.println("1212@ss.cn這個郵箱是非法的!");
??}??
}
}
class?Resource?{?
?private?static?final?Logger?logger?=?Logger.getLogger(Resource.class);
?
?public?static?boolean?isEmail(String?email){?????
?String?str="^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A-Za-z]{2,3}([\\.][A-Za-z]{2})?$";
Pattern?p?=?Pattern.compile(str);?????
Matcher?m?=?p.matcher(email);?????
logger.info(m.matches()+"---");?????
return?m.matches();?????
}?
?
}
這里要用到一個jar包,我用的是log4j-1.2.17.jar
package com.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringTest {
public static void main(String[] args) {
Pattern p = Pattern.compile("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.([a-zA-Z0-9_-])+)+$");
Matcher m = p.matcher("wangxu198709@gmail.com");
//Mather m = p.matcher("wangxu198709@gmail.com.cn");這種也是可以的!
boolean b = m.matches();
System.out.print(b);//true
}
}
正則表達式判斷 String email = ???; if(!email.matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$")){ System.out.println("郵箱格式不正確"); }else{ System.out.println("郵箱格式正確"); }
import?java.util.Scanner;
public?class?Test?{
public?static?void?main(String[]?args)?{
Scanner?sc?=?new?Scanner(System.in);
System.out.println("輸入你要驗證的郵箱:");
String?mail?=?sc.next();
//@出現(xiàn)的下標
int?atIndex?=?0;
//.出現(xiàn)的下標
int?fullIndex?=?0;
//第一次出現(xiàn)的下標
atIndex?=?mail.indexOf('@',?0);
//第一次出現(xiàn)的下標
fullIndex?=?mail.indexOf('.',?0);
//判斷@是否出現(xiàn).后面
if(atIndex?=?fullIndex)?{
???System.out.println("此郵箱不合法!");
System.exit(0);
}
//判斷@是否只有一個
if(mail.indexOf('@',?0)?!=?mail.lastIndexOf('@'))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
//判斷.是否只有一個
if(mail.indexOf('.',?0)?!=?mail.lastIndexOf('.'))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
//判斷@前面是否是1到40個字符
if(!(atIndex?=?1??atIndex?=?40))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
//判斷@前面是否為字母
for?(int?i?=?0;?i??atIndex;?i++)?{
if?(!((mail.charAt(i)?=?'a'??mail.charAt(i)?=?'z')||(mail.charAt(i)?=?'A'??mail.charAt(i)?=?'Z')))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
}
//判斷@到.是否為只能是1到40個字符
if(!(fullIndex?-?atIndex?-?1?=?1??fullIndex?-?atIndex?-?1?=?40))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
//判斷@到.直接的是否為字母或數(shù)字
for?(int?i?=?atIndex+1;?i??fullIndex;?i++)?{
if?(!((mail.charAt(i)?=?'a'??mail.charAt(i)?=?'z')||(mail.charAt(i)?=?'A'??mail.charAt(i)?=?'Z')||(mail.charAt(i)='0'mail.charAt(i)='9')))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
}
//判斷.后面的是2到3長度的字符
if?(!(mail.length()?-?fullIndex?-?1?=?2??mail.length()?-?fullIndex?-1?=?3)?){
System.out.println("此郵箱不合法!");
System.exit(0);
}
//判斷.后面的是英文字母
for?(int?i?=?fullIndex+1;?i??mail.length();?i++)?{
if?(!((mail.charAt(i)?=?'a'??mail.charAt(i)?=?'z')||(mail.charAt(i)?=?'A'??mail.charAt(i)?=?'Z')))?{
System.out.println("此郵箱不合法!");
System.exit(0);
}
}
System.out.println("此郵箱是合法的!");
}
}