项目场景:
Spring Boot 整合 mail,实现发送邮件功能
具体配置请看这,这是最终版
问题描述:
Couldn’t connect to host, port: localhost, 25; timeout -1;???
无法连接到主机,端口:localhost, 25;超时-1;
org.springframework.mail.MailSendException: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
nested exception is:
java.net.ConnectException: Connection refused: connect. Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
nested exception is:
java.net.ConnectException: Connection refused: connect; message exception details (1) are:
Failed message 1:
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
解决方案:
- 百度有人说是没有开启本地 25 端口,需要下载×××然后×××××××××。尝试了,失败!
- 还有什么该端口号的,什么下载各种东西的。。统统没用。
- 最后发现 JavaMailSenderImpl 是我 new JavaMailSenderImpl() 出来的,里面没有配置信息
只有利用容器注入,才可以。
错误写法
public static void emailSend(String to, String subject, String text) {
//发送者
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
//邮件实体
SimpleMailMessage message = new SimpleMailMessage();
//发送者
message.setFrom(emailUtils.from);
//接收者
message.setTo(to);
//主题
message.setSubject(subject);
//内容
message.setText(text);
//发送
javaMailSender.send(message);
}
正确写法
@Resource
private JavaMailSenderImpl javaMailSender;
/**
* 发送邮件
*
* @param to 接收者
* @param subject 主题
* @param text 内容
*/
public static void emailSend(String to, String subject, String text) {
//邮件实体
SimpleMailMessage message = new SimpleMailMessage();
//发送者
message.setFrom(emailUtils.from);
//接收者
message.setTo(to);
//主题
message.setSubject(subject);
//内容
message.setText(text);
//发送
emailUtils.javaMailSender.send(message);
}