首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-mail-启动器忽略spring.mail.* config

spring-mail-启动器忽略spring.mail.* config
EN

Stack Overflow用户
提问于 2017-10-25 11:30:36
回答 2查看 1.7K关注 0票数 1

我有一个使用spring的项目,并在我的build.gradle中添加了以下依赖项:

代码语言:javascript
复制
compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '1.5.7.RELEASE'

我的application.properties包含

SMTP配置

代码语言:javascript
复制
spring.mail.host=mail.xxx
spring.mail.port=587
spring.mail.username=donotreply@xxx
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.from=donotreply@xxx

根据这里的多个答案和我找到的文档,应该可以使用这个设置创建bean。

我现在想在Service类中使用mailer

代码语言:javascript
复制
@Autowired
private JavaMailSender emailSender;
[...]

@Value("${spring.mail.host}")
private String mailHost;

当我试图使用emailSender发送消息时,我会得到以下错误:

邮件服务器连接失败;嵌套异常是com.sun.mail.util.MailConnectException:无法连接到主机,端口: localhost,25;timeout -1;嵌套异常是: java.net.ConnectException: connection拒绝: connect。失败消息: com.sun.mail.util.MailConnectException:未能连接到主机,端口: localhost,25;timeout -1;嵌套异常为: java.net.ConnectException: Connection拒绝: connect

显然,它试图连接到本地主机,而不是配置的主机。变量mailHost确实包含正确的值,因此属性被正确读取。

编辑: org.springframework.mail.javamail.JavaMailSenderImpl,是emailSender的自动处理类,我认为这是正确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-01 18:23:04

在我的例子中,原因是我自己实例化了bean,如下所示:

代码语言:javascript
复制
@Bean
public JavaMailSender mailSender() throws IOException {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setDefaultEncoding("UTF-8");
    return mailSender;
}

不知道为什么,但那样的话,它就会忽略application.properties。可能原因是,我显式地实例化了JavaMailSenderImpl以设置默认编码,而且该实现可能不知道application.properties

然而,删除那个bean解决了这个问题。

票数 3
EN

Stack Overflow用户

发布于 2017-10-25 12:31:52

发现一位同事也在做同样的工作,并给出了一个不完整的bean定义。那颗豆子是硬毛的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46931283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档