最早我们发邮件的时候是使用 JavaMail 来发送邮件,而在 Spring Boot 中, Spring Boot 帮我们将 JavaMail 封装好了,是可以直接拿来使用的。
1. 依赖文件 pom.xml
代码清单:spring-boot-mail/pom.xml
spring-boot-starter-thymeleaf 引入这个模版引擎是因为我们在发送邮件的时候,各种格式使用 HTML 的方式更容易实现,同样我们也可以使用 freeMark , Spring Boot 同样为我们提供了依赖包。
2. 配置文件 application.yml
代码清单:
这里我使用 QQ 邮箱作为邮件的发送方,其中的 并不是我们的 QQ 密码,这个密码需要我们在 QQ 邮箱的设置里面自己申请的。如下图:
其中的 和 这两个配置是我自己配置的,并不是官方的配置,后续我会在代码中读这两个配置项。
3. 简易邮件发送
3.1 实现类
代码清单:spring-boot-mail/src/main/java/com/springboot/springbootmail/service/impl/MailServiceImpl.java
3.2 测试类
代码清单:spring-boot-mail/src/test/java/com/springboot/springbootmail/SpringBootMailApplicationTests.java
这里邮件发送至本人的 Hotmail 邮箱。
4. 发送 HTML 格式的邮件
4.1 实现类
代码清单:spring-boot-mail/src/main/java/com/springboot/springbootmail/service/impl/MailServiceImpl.java
4.2 页面模版
代码清单:spring-boot-mail/src/main/resources/templates/email.html
这里添加了动态内容 code ,在日常的开发中,我们使用发送验证码,动态生成内容是很有必要的。
4.3 测试类
代码清单:spring-boot-mail/src/test/java/com/springboot/springbootmail/SpringBootMailApplicationTests.java
5. 发送带附件的邮件
5.1 实现类
代码清单:spring-boot-mail/src/main/java/com/springboot/springbootmail/service/impl/MailServiceImpl.java
注意:如果需要发送多个附件,写多个 即可。
5.2 测试类
代码清单:spring-boot-mail/src/test/java/com/springboot/springbootmail/SpringBootMailApplicationTests.java
6. 小结
在实际的开发过程中,邮件发送失败是一件比较经常出现的事情,比如:网络堵塞、对方拒收等情况,一般在邮件系统的设计中,可以先将要发送的数据写入数据中,等发送完成后再修改标记位,再增加一个保障机制,例如增加一个定时任务,将一段时间内,发送失败并重试次数小于一定阀值的内容再次进行发送,如果邮件系统的压力过大,可以选择使用异步的方式来进行发送,比如使用消息队列进行承压。
7. 示例代码
示例代码-Github:https://github.com/meteor1993/spring-boot-examples/tree/master/spring-boot-mail
示例代码-Gitee:https://gitee.com/inwsy/spring-boot-examples/tree/master/spring-boot-mail
7. 参考
http://www.ityouknow.com/springboot/2017/05/06/spring-boot-mail.html
领取专属 10元无门槛券
私享最新 技术干货