本文目錄一覽:
- 1、java如何驗證一個email地址是否真實有效。
- 2、java :從控制台輸入一個字元串,驗證是不是郵箱?
- 3、java 驗證郵箱是否存在
- 4、如何用java檢驗電子郵箱格式的合法性?要用到String的方法來判斷
java如何驗證一個email地址是否真實有效。
首先使用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(“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
java :從控制台輸入一個字元串,驗證是不是郵箱?
自定了一個合法郵箱規則,希望能幫助理解。代碼如下: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.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 驗證郵箱是否存在
一般的驗證是 驗證郵件地址格式是否正確,如果你需要驗證郵箱是否存在就需要發個郵件過去,即使發過去 你也不知道是否存在,除非有郵件返回。
所以一般只是驗證郵件格式是否正確就可以了。
如何用java檢驗電子郵箱格式的合法性?要用到String的方法來判斷
自己寫邏輯驗證的方式可以做到。我寫了下面的:
public static boolean validateEmail(String email) {
boolean flag = false;
int pos = email.indexOf(“@”);
if (pos == -1 || pos == 0 || pos == email.length() – 1) {
return false;
}
String[] strings = email.split(“@”);
if (strings.length != 2) {// 如果郵箱不是xxx@xxx格式
return false;
}
CharSequence cs = strings[0];
for (int i = 0; i cs.length(); i++) {
char c = cs.charAt(i);
if (!Character.isLetter(c) !Character.isDigit(c)) {
return false;
}
}
pos = strings[1].indexOf(“.”);// 如果@後面沒有.,則是錯誤的郵箱。
if (pos == -1 || pos == 0 || pos == email.length() – 1) {
return false;
}
strings = strings[1].split(“.”);
for (int j = 0; j strings.length; j++) {
cs = strings[j];
if (cs.length() == 0) {
return false;
}
for (int i = 0; i cs.length(); i++) {//如果保護不規則的字元,表示錯誤
char c = cs.charAt(i);
if (!Character.isLetter(c) !Character.isDigit(c)) {
return false;
}
}
}
return true;
}
這個效率也不會差很多,不過我推薦matches方法,經過測試的,matches匹配方式運行10000次的時間比上面的時間少了20毫秒。
原創文章,作者:SZLJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133578.html