for(int i=1;i=a.length();i++)
成都創(chuàng)新互聯(lián)公司專注于霍林郭勒企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)?;袅止站W(wǎng)站建設(shè)公司,為霍林郭勒等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
{
d=a.substring(i-1,i);
if(d.equals("@."))
{
return false;
}
}
這個循環(huán)判定完是有@.返回false不對的,用判定"@."是否存在好一些
if(!a.contains("@."))
{
return false;
}
自己寫邏輯驗證的方式可以做到。我寫了下面的:
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++) {//如果保護不規(guī)則的字符,表示錯誤
char c = cs.charAt(i);
if (!Character.isLetter(c) !Character.isDigit(c)) {
return false;
}
}
}
return true;
}
這個效率也不會差很多,不過我推薦matches方法,經(jīng)過測試的,matches匹配方式運行10000次的時間比上面的時間少了20毫秒。
我把我寫的給你看看吧
import java.util.*;
import javax.mail.internet.*;
import javax.mail.*;
/**
*
* pCopyright: Copyright (c) 2007/p
*
* pCompany: xjtu /p
*
* @author cy
* @version 1.0
*/
public class Mail {
/*
* 參數(shù) to 接收者郵箱地址
* title 主題
* content 內(nèi)容
*/
public static boolean sendMail(String to,String title,String content){
try{
//接收郵件信息
String to_mail=to;
String to_title=title;
String to_content=content;
//建立郵件會話
Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","163.com ");//存儲發(fā)送郵件服務(wù)器的信息
props.put("mail.smtp.auth","true");//同時通過驗證
Session s=Session.getInstance(props);//根據(jù)屬性新建一個郵件會話
s.setDebug(true);
//由郵件會話新建一個消息對象
MimeMessage message=new MimeMessage(s);//由郵件會話新建一個消息對象
//設(shè)置郵件
InternetAddress from=new InternetAddress("javachengxudaima@163.com ");
message.setFrom(from);//設(shè)置發(fā)件人
InternetAddress toWhere=new InternetAddress(to_mail);
message.setRecipient(Message.RecipientType.TO,toWhere);//設(shè)置收件人,并設(shè)置其接收類型為TO
message.setSubject(to_title);//設(shè)置主題
message.setText(to_content);//設(shè)置信件內(nèi)容
message.setSentDate(new Date());//設(shè)置發(fā)信時間
//發(fā)送郵件
message.saveChanges();//存儲郵件信息
Transport transport=s.getTransport("smtp");
//以smtp方式登錄郵箱,第一個參數(shù)是發(fā)送郵件用的郵件服務(wù)器SMTP地址,第二個參數(shù)為用戶名,第三個參數(shù)為密碼
transport.connect("163.com","javachengxudaima@163.com ","87w92ab@");
transport.sendMessage(message,message.getAllRecipients());//發(fā)送郵件,其中第二個參數(shù)是所有已設(shè)好的收件人地址
transport.close();
return true;
}catch(MessagingException e){
System.err.println("發(fā)送失敗!");
return false;
}
}
public static void main(String[] args) {
for(int i=1;i=1000;i++){
boolean isSuccess = Mail.sendMail("這里輸入待發(fā)送的郵件地址", "這是主題", "這是內(nèi)容");
if(isSuccess)System.err.println("已發(fā)送了"+i+"封郵件!");
else break;
}
System.out.println("發(fā)送完成!");
}
}
首先使用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();
}
//?連接到郵箱服務(wù)器
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