需要引入 dnsjava-2.1.1.jar和commons-net-2.2.jar
package com.bjypt.vipcard.utils;
import java.io.IOException;
import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.smtp.SMTPReply;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Record;
import org.xbill.DNS.Type;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
public class EmailUtil {
//对外开发接口
private EmailInterFace interFace;
public interface EmailInterFace{
public void isEmail(Boolean isEmail);
}
public void setInterFace(EmailInterFace interFace) {
this.interFace = interFace;
}
Handler hand = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what){
case 1:
if(interFace!= null){
interFace.isEmail(true);
}
break;
case 2:
if(interFace!= null){
interFace.isEmail(false);
}
break;
}
}
};
public void check_email(final String email){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if(checkEmail(email)){
Log.e("===", "有效");
hand.sendEmptyMessage(1);
}else{
Log.e("=====", "无效");
hand.sendEmptyMessage(2);
};
}
}).start();
}
protected 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项自己填写快速的,有效的邮箱
if("163.com".equals(hostName)){
client.login("qq.com");
client.setSender("******@qq.com");
}else{
client.login("163.com");
client.setSender("*****@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;
}
}
调用方法:
emailUtil = new EmailUtil();
emailUtil.check_email(et_email.getText().toString());
接口实现:
emailUtil.setInterFace(new EmailInterFace() {
@Override
public void isEmail(Boolean isEmail) {
// TODO Auto-generated method stub
if(!isEmail){
//不是有效邮箱
}else{
//是有效邮箱
}
}
});
Android中检测邮箱是否是有效邮箱
最新推荐文章于 2023-03-15 19:24:45 发布