Spring 为什么要寻找本地 SMTP 服务器

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

我一直在尝试在我的应用程序中实现密码重置,为此我想向用户发送一封包含验证码的电子邮件。 我已经构建了这样的java邮件实现

配置:

@Configuration class MailConfig {
    @Bean fun javaMailSender(): JavaMailSender = JavaMailSenderImpl()
}

服务:

@Service class MailService {
    @Autowired lateinit var sender: JavaMailSender

    fun sendMail(email: String, text: String) {
        val msg = sender.createMimeMessage()
        val helper = MimeMessageHelper(msg, true)
        helper.setTo(email)
        helper.setSubject("Test")
        helper.setText(text)
        sender.send(msg)
    }
}

应用程序属性:

spring.mail.host=smtp-relay.brevo.com
spring.mail.port=587
spring.mail.username=(senderId)@smtp-brevo.com
spring.mail.password=(password)
spring.mail.properties.mail.smptp.auth=true
spring.mail.properties.mail.starttls.enable=true
spring.mail.properties.mail.starttls.required=true

我只是从 REST 端点调用 sendMail() 方法来处理发送重置请求,但当端点被击中时,服务器会生成以下错误:

jakarta.mail.MessagingException:来自 SMTP 主机的问候语不好:localhost,端口:25,响应:421 无法连接到 SMTP 服务器

但是,我不明白为什么它在 127.0.0.1:25 上寻找服务器,而属性指定了完全不同的主机和端口。 我已经仔细检查了我的 smtp 服务的属性名称以及登录信息。我相信问题出在 application.properties 中的某个地方,因为我确认了我编写的用于实现邮件服务的代码,如下所示:https://www.baeldung.com/spring-email

spring spring-boot kotlin smtp brevo
1个回答
0
投票

您不使用 Spring Boot 的自定义 bean。它在

org.springframework.boot.autoconfigure.mail.MailSenderPropertiesConfiguration
中实例化和配置。

如果您自己为

org.springframework.boot.autoconfigure.mail.JavaMailSenderImpl
提供bean,您还必须小心配置它。

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