**使用java 多个邮箱获取认证问题 **
我有一批smtp 账号 想测试获取全部认证 但是发现 传进去之后 调用方法 只有先进去的list的 host 才能认证成功
- 下方代码 先执行的是smtp.aol.com 地址 所有都能判断认证 都可以成功 但是host地址变了之后 其他的都不能判断
如果把smtp.sina.com 的先放到list里面 新浪的都可以判断 其他的不行
抛的异常是这个 请指点
javax.mail.AuthenticationFailedException: 535 5.7.0 (#AUTH005) Too many bad auth attempts.
package com.itheima.utlis;
import com.itheima.pojo.EmailUser;
import javax.mail.*;
import java.util.ArrayList;
import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
public class EmailUtis {
public static void main(String[] args) {
ArrayList<EmailUser> emailUsers = new ArrayList<>();
emailUsers.add(new EmailUser("smtp.aol.com", "thiriot.sharon9986@aol.com", "exhfbwzrqbqjsanq"));
emailUsers.add(new EmailUser("smtp.aol.com", "thiriot.sharon9986@aol.com", "exhfbwzrqbqjsanq"));
emailUsers.add(new EmailUser("smtp.sina.com", "gmywgw@sina.com", "0913ca85741ebe91"));
emailUsers.add(new EmailUser("smtp.sina.com", "gmywgw@sina.com", "0913ca85741ebe91"));
ExecutorService executor = Executors.newFixedThreadPool(10); // 10 threads in pool
for (EmailUser emailUser : emailUsers) {
checkEmail(emailUser.getHost(), emailUser.getEmail(), emailUser.getPassword());
}
}
/**
* @param host SMTP服务端地址,如qq邮箱为smtp.qq.com
* @param email 邮箱名
* @param password 邮箱注册码(非登录名,具体需根据邮箱到官网申请)
* @return 如果可用返回true
* @throws MessagingException
*/
public static Object checkEmail(String host, String email, String password) {
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");// 连接协议
props.put("mail.smtp.host", host);// 主机名,必须要,也可以使用smtp.sina.com.cn
// props.put("mail.smtp.port", 465);// 端口号,写不写无所谓,不确定的情况下,可以不写
props.put("mail.smtp.auth", "true");// 是否鉴权,必须要
props.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接,一般都使用
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getDefaultInstance(props);
// session.setDebug(true);
Transport transport = null;
try {
transport = session.getTransport();
} catch (NoSuchProviderException e) {
e.printStackTrace();
}
try {
// System.out.println(email + "--" + password);
transport.connect(email, password);
System.out.println(email + "认证成功"+session.toString());
return true;
} catch (MessagingException e) {
e.printStackTrace();
System.out.println(email + "认证失败"+session.toString());
return false;
}finally {
if (transport != null) {
try {
transport.close();
props.clone();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
}
}