阿里云服务器25端口默认被封
我用的阿里云centos7是默认封禁了TCP 25端口出方向的访问流量,所以用户无法使用25号端口邮件服务,如果你是使用25端口进行简单邮件发送是会报连接超时的错误的
解决办法
一. 向阿里云申请开放25端口
这是申请地址和方法 :申请开放25端口
二. 改用更安全更推荐的465端口进行邮件发送
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
/**
* Description: sendEmail
* Created by danqing on 2020/4/23 21:31
*/
public class SendEmail {
public static void sendEmailCode(String receiveEmail,String content)
{
// 收件人电子邮箱
String to = receiveEmail;
// 发件人电子邮箱
String from = "xxxx@xxx.com";
// 指定发送邮件的主机为 smtp.163.com
String host = "smtp.163.com"; // 邮件服务器
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//设置邮件会话参数
Properties properties = new Properties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
properties.setProperty("mail.smtp.socketFactory.fallback", "false");
//邮箱发送服务器端口,这里设置为465端口
properties.setProperty("mail.smtp.port", "465");
properties.setProperty("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(properties,new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
//这里的username是你的邮箱账户 和上面的发件人邮箱是一样的
//password是你的邮箱服务器的授权码
return new PasswordAuthentication("username", "password");
}
});
try{
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段 发件人昵称和字符集
message.setFrom(new InternetAddress(from,"昵称","UTF-8"));
// Set To: 头部头字段
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: 头部头字段
message.setSubject("shiro_ssm权限管理系统登录");
// 设置消息体
message.setText(content);
// 发送消息
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException | UnsupportedEncodingException mex) {
mex.printStackTrace();
}
}
public static void main(String[] args) {
sendEmailCode("xxx@xx.com","使用465端口发送一封邮件");
}
}