繁体   English   中英

从 SpringBoot 2.1.3.RELEASE 发送邮件

[英]sending email from SpringBoot 2.1.3.RELEASE

我想从 SpringBoot 2.1.3.RELEASE 发送邮件; 我已经确定了这些属性:

spring.mail.host=smtp.gmail.com
spring.mail.username=nunito.calzada@gmail.com
spring.mail.password=aMdwd3cded2@
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
spring.mail.propertirs.mail.smtp.ssl.enable = true
and using org.springframework.mail.MailSender

我正在使用org.springframework.mail.MailSender发送电子邮件

    mailSender.send(mailMessage);

一切似乎都很好,我没有看到任何异常,任何错误,但我没有收到电子邮件,甚至在垃圾邮件中也没有收到

我也试过

spring.mail.properties.mail.smtp.socketFactory.port = 587

结果相同

为 Spring Boot 添加依赖项

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
        <version>2.1.3.RELEASE</version>
 </dependency>

一旦依赖关系就位,下一步是使用 spring.mail.* 命名空间在 application.properties 文件中指定邮件服务器属性。

例如,Gmail SMTP 服务器的属性可以指定为:

spring.mail.protocol=smtp
spring.mail.host: smtp.gmail.com
spring.mail.port: 465
spring.mail.username: <user name>
spring.mail.password: <password>
spring.mail.properties.mail.smtp.auth: true
spring.mail.properties.mail.smtp.starttls.enable: true
mail.smtp.starttls.enable=false
spring.mail.properties.mail.smtp.starttls.required: true
spring.mail.properties.mail.smtp.ssl.enable = true
spring.mail.test-connection=

代码:

@Autowired
private JavaMailSender 
private void setMailDetailsForSend( final String payload, final String email ) throws MessagingException
{

    final MimeMessage mail = mailSender.createMimeMessage();
    final MimeMessageHelper helper = new MimeMessageHelper( mail, true );
    helper.setTo( email );
    helper.setSubject( "Notification" );
    helper.setText( "text/html", payload );
    mailSender.send( mail );

}

某些 SMTP 服务器需要 TLS 连接,因此属性 spring.mail.properties.mail.smtp.starttls.enable 用于启用 TLS 保护的连接。

重要的是传入 SendMail(String from ,....) 的构造函数,设置: public void sendMail(String from, String to, String subject, String text, boolean isHtmlContent) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage( );

    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    **mimeMessageHelper.setFrom(from);**

其中from必须是发件人的有效电子邮件地址,通常与application.properties 中定义的用户名相同: ...spring.mail.username:<your_username email address>

您的属性文件包含

spring.mail.properties.mail.smtp.socketFactory.port = 465

gmail 使用 TSL/SSL

Port for TLS/STARTTLS: 587
    Port for SSL: 465

我建议你使用

spring.mail.properties.mail.smtp.socketFactory.port = 587

而不是 465

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM