springboot javaMailSender SMTP连接错误:无法连接到主机,端口:localhost,25;超时-1;

问题描述 投票:0回答:1

我在 application.propertys 中设置了推荐的端口 587,但是 springboot 似乎仍然使用端口 25,有人可以告诉我为什么端口 25 不起作用,或者更重要的是我如何修复我的 smtp 端口 587? 预先感谢!

错误:

2023-12-18T15:30:19.084+01:00 ERROR 15800 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.mail.MailSendException: Mail server connection failed. 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 exceptions (1) are:
Failed message 1: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
  nested exception is:
    java.net.ConnectException: Connection refused: connect] with root cause

java.net.ConnectException: Connection refused: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method) ~[na:na]
    at java.base/sun.nio.ch.Net.connect(Net.java:579) ~[na:na]
    at java.base/sun.nio.ch.Net.connect(Net.java:568) ~[na:na]
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:585) ~[na:na]
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
    at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na]
    at java.base/java.net.Socket.connect(Socket.java:583) ~[na:na]
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:361) ~[jakarta.mail-1.1.0.jar:na]
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236) ~[jakarta.mail-1.1.0.jar:na]
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2209) ~[jakarta.mail-1.1.0.jar:na]
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:754) ~[jakarta.mail-1.1.0.jar:na]
    at jakarta.mail.Service.connect(Service.java:342) ~[jakarta.mail-1.1.0.jar:na]
    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:518) ~[spring-context-support-6.0.12.jar:6.0.12]
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:437) ~[spring-context-support-6.0.12.jar:6.0.12]
    

我的代码:

@Component
public class EmailSender {


    @Bean
    public static JavaMailSenderImpl javaMailSender() {
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();

        javaMailSender.setProtocol("SMTP");
        javaMailSender.setHost("smtp.office365.com");
        javaMailSender.setPort(587);

        return javaMailSender;
    }

     JavaMailSender mailSender = new JavaMailSenderImpl();

    public void sendEmail(String to, String subject, String message){

        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setTo(to);
        mailMessage.setSubject(subject);
        mailMessage.setText(message);

        mailSender.send(mailMessage);
    }

}

我的应用程序属性:

# mail
#spring.mail.host=smtp-mail.outlook.com
spring.mail.host=smtp.office365.com
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.port=587
spring.mail.username=${[email protected]}
spring.mail.password=${*secret*}
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.debug=true

我尝试在应用程序中发送电子邮件,但在设置 smtp 端口 587 时在端口 25 处出现错误

问候

java spring smtp jakarta-mail spring-boot-starter
1个回答
0
投票

https://stackoverflow.com/a/38629240/23120849

这真是工艺品,棒极了!它有效。

当然还有 Outlook 的端口和主机: property.put("mail.smtp.host", "smtp.office365.com"); 属性.put("mail.smtp.port", 587);

© www.soinside.com 2019 - 2024. All rights reserved.