关于阿里云轻量级服务器封25和465端口无法发送邮件问题的解决方案

最近进行SSM项目实践,将项目部署到阿里云轻量级服务器上时,发现在自己电脑上测试可用的发送邮件工具类无法使用。
上网查阅资料, 得知是阿里云封掉了发送邮件的25和465端口。

于是将25端口发送邮件的工具类稍加改造,整理代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Properties;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public class MailUtils587 {
private static JavaMailSenderImpl javaMailSender;
private static String userName = "xxxxxxxxx@qq.com";
static {
javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.qq.com");// 连接服务器
javaMailSender.setUsername(userName);// 账号
javaMailSender.setPassword("xxxxxxxxxxxxx");// 密码
javaMailSender.setDefaultEncoding("UTF-8");
Properties properties = new Properties();

// 设置通过ssl协议使用587端口发送、使用默认端口(25)时下面三行不需要
properties.setProperty("mail.smtp.auth", "true");// 开启认证
properties.setProperty("mail.smtp.socketFactory.port", "587");// 设置ssl端口
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
javaMailSender.setJavaMailProperties(properties);
}

public static void sendEmail(final String title, final String content, final String toMail) {

new Thread(new Runnable() {// 开启线程异步发送 防止发送请求时间过长
@Override
public void run() {
try {
if (!toMail.equals("")) {
String[] toAddress = toMail.split(",");
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
helper.setFrom(userName);
helper.setTo(toAddress);
helper.setSubject(title);
helper.setText(content, true); // 内容
javaMailSender.send(message); // 发送邮件
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}

//测试发送
public static void main(String[] args) {
sendEmail("title", "content", "xxxxxxxxxx@qq.com");
}
}

完美解决!亲测某讯邮箱可用~

注意:

  • 密码不是登陆密码, 而是用于登录第三方客户端邮箱的授权码, 该授权码可以在QQ邮箱-设置-账户中通过二维码获取;
  • 需要先在pom中导入spring-context-support
1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
0%