SpringBoot入门建站全系列(十)邮件发送功能
Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封装。
JavaMailSenderImpl: 邮件发送器,主要提供了邮件发送接口、透明创建Java Mail的MimeMessage、及邮件发送的配置(如:host/port/username/password...)。 MimeMailMessage、MimeMessageHelper:对MimeMessage进行了封装。Spring还提供了一个回调接口MimeMessagePreparator, 用于准备JavaMail的MIME信件.
SpringBoot对Email做了封装:https://docs.spring.io/spring-boot/docs/2.0.9.RELEASE/reference/htmlsingle/#boot-features-email
直接读取配置,然后我们的Service逻辑可以直接注入JavaMailSender进行邮件发送。
项目地址: 品茗IT-同步发布
品茗IT 提供在线支持:
一键快速构建Spring项目工具
一键快速构建SpringBoot项目工具
一键快速构建SpringCloud项目工具
一站式Springboot项目生成
Mysql一键生成Mybatis注解Mapper
如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。
一、配置
本文假设你已经引入spring-boot-starter-web。已经是个SpringBoot项目了,如果不会搭建,可以打开这篇文章看一看《SpringBoot入门建站全系列(一)项目建立》。
1.1 Maven依赖
<dependency>
配置fastjson是因为我写的示例中用到了,用不到的话就可以去掉。
1.2 配置文件
application.properties 中需要添加下面的配置:
spring.mail.host=smtp.qq.com
spring.mail.username=916881512@qq.com
spring.mail.password=xxxxx
spring.mail.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.starttls.required=true mail.from=916881512@qq.com
mail.fromName=Admin
这里,
- spring.mail.properties是额外的配置信息。
- spring.mail.port这个很重要,我用的是465,是smtp的ssl端口,smtp一般是用25端口,但是很多云服务器把25端口禁用了,美其名曰安全。所以可以用465端口也发送邮件。如果想用25端口,后面的spring.mail.properties.*去掉即可。
- mail.from和mail.fromName是业务逻辑需要的配置,不是SpringBoot自动装配的。
- 其他配置文件都是见文知意了,不再说了。
SpringBoot官网配置文件说明:
# Email (MailProperties)
spring.mail.default-encoding=UTF-8 # Default MimeMessage encoding.
spring.mail.host= # SMTP server host. For instance, `smtp.example.com`.
spring.mail.jndi-name= # Session JNDI name. When set, takes precedence over other Session settings.
spring.mail.password= # Login password of the SMTP server.
spring.mail.port= # SMTP server port.
spring.mail.properties.*= # Additional JavaMail Session properties.
spring.mail.protocol=smtp # Protocol used by the SMTP server.
spring.mail.test-connection=false # Whether to test that the mail server is available on startup.
spring.mail.username= # Login user of the SMTP server.
二、发送邮件业务逻辑
发送邮件时,需要指明发送人邮箱和名称。
package
这里的MailService定义了多种邮件发送方式,包含普通文本、html、内嵌图片、附件、表格等。因此需要我们定义多种实体。
三、测试
新建一个MailRest,用来测试邮件发送:
package
四、过程中用到的邮件类型实体
MailMessage邮件实体:
package
MailType邮件类型接口:
package
详细完整的邮件类型,可以访问品茗IT-博客《SpringBoot入门建站全系列(十)邮件发送功能》进行查看
快速构建项目
Spring组件化构建
SpringBoot组件化构建
SpringCloud服务化构建
喜欢这篇文章么,喜欢就加入我们一起讨论SpringBoot技术吧!