相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender
接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender
发送邮件。这里以 QQ邮件 为例
[TOC]
环境/版本一览:
- 开发工具:Intellij IDEA 2018.2.2
- springboot: 2.0.6.RELEASE
- jdk:1.8.0_171
- maven:3.3.9
- spring-boot-starter-mail: 2.0.6.RELEASE
pom.xml
1 | <dependencies> |
application.yml
1 | spring: |
如何获得授权码?
打开我的邮箱
,选择设置
选择账户
,找到服务,点击开启
发送短信,签证成功后既可获得授权码
入门
Test
1 | package com.fatal; |
显示
启动程序测试方法 Chapter22ApplicationTests.sendSimpleMail()
进阶
在上例中,我们通过使用SimpleMailMessage
实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件、或是使用邮件模块等。这个时候我们就需要使用MimeMessage
来设置复杂一些的邮件内容,下面我们就来依次实现一下。下面的例子会以 发送附件 和 嵌入静态资源 为例
Test
1 | package com.fatal; |
这里需要注意的是addInline函数中资源名称==wallpaper==需要与正文中==cid:wallpaper==对应起来。
显示
启动程序测试方法 Chapter22ApplicationTests.sendAttachmentsMail()
注意
如果需要设置替代文本或添加内联元素或附件,则通过构造函数创建适当的MimeMessageHelper,该构造函数采用“multipart”标志。
MimeMessageHelper(MimeMessage mimeMessage)
MimeMessageHelper(MimeMessage mimeMessage, boolean multipart)
使用第一个构造方法会报错
1
java.lang.IllegalStateException: Not in multipart mode - create an appropriate MimeMessageHelper via a constructor that takes a 'multipart' flag if you need to set alternative texts or add inline elements or attachments.
参考资料
Spring Boot中使用JavaMailSender发送邮件
总结
SpringBoot
的知识已经有前辈在我们之前探索了。比较喜欢的博主有:唐亚峰 | Battcn、方志朋的专栏、程序猿DD、纯洁的微笑。对这门技术感兴趣的可以去他们的博客逛逛。谢谢他们的分享~~
以上文章是我用来学习的Demo
,都是基于 SpringBoot2.x
版本。
源码地址: https://github.com/ynfatal/springboot2-learning/tree/master/chapter22