在我们开发过程中发送邮箱时,可能会出现无法到SMTP主机:smtp.xxx.com,端口:25 或者 465;
异常信息如下:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.xxx.com, port: 465, response: -1
如果出现这种异常,需要添加下面信息就可以解决
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.ssl.enable", true);
//设置安全证书
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
如:
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "ture");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
// props.setProperty("mail.smtp.host", "smtpdm.aliyun.com");
props.setProperty("mail.smtp.host", "邮箱服务器主机地址");
// 如果使用ssl,则去掉使用25端口的配置,进行如下配置,
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.port", "465");
//设置安全证书
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.mime.encodefilename", "true");
Session session = Session.getInstance(props);
// MimeMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
MimeBodyPart messageBodyPart = new MimeBodyPart();// 创建一个包含附件内容的MimeBodyPart
// 设置HTML内容
try {
messageBodyPart.setContent("测试","text/html; charset=utf-8");
mainPart.addBodyPart(messageBodyPart);
Message msg = new MimeMessage(session);
msg.setSubject("发送测试");
// 设置邮件内容
// 设置发件人
msg.setFrom(new InternetAddress(sendEmail, "xxx", "UTF-8"));
// 将MimeMultipart对象设置为邮件内容
msg.setContent(mainPart);
// Transport transport = session.getTransport();
SMTPTransport transport = (SMTPTransport) session.getTransport("smtp");
// 连接邮件服务器
transport.connect("963330213@qq.com", "密码");
// 发送邮件
InternetAddress[] internetAddressTo = InternetAddress.parse("963330213@qq.com");
transport.sendMessage(msg, internetAddressTo);
}catch (Exception e) {
e.printStackTrace();
}