Spring启动-无法连接到SMTP主机:SMTP.gmail.com,端口:25,响应:421
我正在使用gmail smtp主机t通过spring boot和JavaMail Sender发送邮件: 我的邮件属性:Spring启动-无法连接到SMTP主机:SMTP.gmail.com,端口:25,响应:421,spring,email,smtp,jakarta-mail,spring-boot,Spring,Email,Smtp,Jakarta Mail,Spring Boot,我正在使用gmail smtp主机t通过spring boot和JavaMail Sender发送邮件: 我的邮件属性: spring.mail.host = smtp.gmail.com spring.mail.username = XXX@gmail.com spring.mail.password = XXX spring.mail.properties.mail.smtp.auth = true spring.mail.properties.mail.smtp.socketF
spring.mail.host = smtp.gmail.com
spring.mail.username = XXX@gmail.com
spring.mail.password = XXX
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.starttls.enable = true
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
获取错误:
Failed message 1: javax.mail.MessagingException: Could not connect to SMTP host: smtp.9business.fr, port: 25, response: 421] with root cause
即使我使用的是端口465,为什么他指向端口25?我不知道这些属性是从哪里来的。要配置的更常见的Spring引导属性可以在此处找到: 因此,您可能应该使用
spring.mail.port
。spring.mail
命名空间中可用的属性包括:
host
port
username
password
defaultEncoding (default: "UTF-8")
但是,如果您正在创建自己的JavaMailSender
,则设置SMTP端口的属性是mail.SMTP.port
。我将JavaMailSender
设置为一个bean,如下所示:
@Value(value = "${mail.smtp.host}")
private String smtpHost;
@Value(value = "${mail.smtp.port}")
private String smtpPort;
@Bean
public JavaMailSender mailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
Properties p = new Properties();
p.setProperty("mail.smtp.auth", "false");
p.setProperty("mail.smtp.host", smtpHost);
p.setProperty("mail.smtp.port", smtpPort);
sender.setJavaMailProperties(p);
return sender;
}
实际上我发现了什么地方出了问题,我应该使用两个端口,一个是我服务器的端口,另一个是gmail服务器的端口:
spring.mail.properties.mail.smtp.socketFactory.port = 25
mail.smtp.port= 465
在属性文件中禁用了mail.smtp.starttls.required到false spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=false
spring.mail.host = smtp.gmail.com
spring.mail.port = 587
spring.mail.username = xxxxxx
spring.mail.password = xxxxxx
spring.mail.properties.mail.smtp.starttls.enable = true
spring.mail.properties.mail.smtp.starttls.required = true
spring.mail.properties.mail.smtp.auth = true
确保谷歌允许不太安全的应用程序:
打开它我尝试将属性spring.mail.port=587添加到我的文件属性中,现在它指向正确的端口,但仍然出现相同的错误,但正确的端口失败消息1:javax.mail.MessagineException:无法连接到SMTP主机:SMTP.gmail.com,端口:587@Steve Spring Boot支持通过在
application.properties
中指定属性来自动配置JavaMailSenderImpl
。请参阅参考指南的一节和。这就是我提到它的原因,但为了清晰起见,我添加了邮件配置类中的完整列表。我已经习惯于自己创建发件人,因为我需要禁用身份验证才能在当前环境中连接到MS Exchange。出于某些原因,Spring Boot automagic邮件发件人似乎不支持设置mail.smtp.auth
属性。添加Spring.mail.port=465
以更改端口。如果这不起作用,请添加您得到的错误。我不知道有关Spring Boot的任何信息,但通常您应该这样做。另请参阅。谢谢,因为我添加了“spring.mail.properties.mail.smtp.starttls.enable”,它对我来说运行良好。顺便说一下,我在中找不到这个属性。有什么想法吗?spring.mail.properties是spring启动自动配置中添加的前缀,但是“mail.smtp.starttls.enable”是Java mail API.Chill中的原始属性名称。。感谢@Ajay提供的信息。为方便起见,您可以在此处查看“mail.smtp.*”java属性: