我有一个使用spring的项目,并在我的build.gradle中添加了以下依赖项:
compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '1.5.7.RELEASE'我的application.properties包含
SMTP配置
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
@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的自动处理类,我认为这是正确的。
发布于 2018-03-01 18:23:04
在我的例子中,原因是我自己实例化了bean,如下所示:
@Bean
public JavaMailSender mailSender() throws IOException {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setDefaultEncoding("UTF-8");
return mailSender;
}不知道为什么,但那样的话,它就会忽略application.properties。可能原因是,我显式地实例化了JavaMailSenderImpl以设置默认编码,而且该实现可能不知道application.properties?
然而,删除那个bean解决了这个问题。
发布于 2017-10-25 12:31:52
发现一位同事也在做同样的工作,并给出了一个不完整的bean定义。那颗豆子是硬毛的。
https://stackoverflow.com/questions/46931283
复制相似问题