短信API都是需要对接平台的,平台会提供参考代码比较简单,但是邮件是免费的,除了springboot,还能用javaxmail(我记得是,大家可以查查资料)
文章目录
前言
文章记录开发中的学习心得,以及遇到的各种问题,以便后续回顾,也供大家学习参考。
一、spring-boot-starter-mail发邮件
1.开发前准备
目前探索过腾讯的个人邮箱和企业邮箱。两类邮箱配置过程比较类似:开通邮箱的客户端服务,获取授权码。
个人QQ邮箱:
(1)开通客户端服务(设置-账户,根据系统操作提示)
(2)获取授权码(上一步完成后,点击“管理服务“进入)
这里需要注意,授权码最好记住,后续查看可能比较麻烦(密文)。
腾讯企业邮箱(一般默认是开通了客户端服务的,可以直接用账号密码用于授权,为避免泄露,可绑定微信生成授权码,此处不再赘述)
2.需要导入的包
(1)spring-boot-starter-mail包
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.7.1</version>
</dependency>
(2)thymeleaf(需要发送html时需要模板引擎)
<!-- SpringBoot集成thymeleaf模板 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
3.发送邮件和html
这里先简单介绍一下单发邮件的方法。发送邮件需要以下参数:
#邮箱配置 mail: host: smtp.qq.com port: 465 username: xxx@qq.com # 授权密码, 非邮箱密码,授权码是用于登录第三方邮件客户端的专用密码。 password: xxxx default-encoding: UTF-8 protocol: smtps # 这个必须特殊声明为smtps,不然会报异常 #邮箱验证码有效时间/秒 code: expiration: 300
(1)邮箱配置的相关参数写在配置文件yml中
类似上述的配置写在邮箱中,需要取出才能生效,参考以下代码:
这里不需要自己设置主机、端口、协议和编码等,只需要用JavaMailSender类即可,邮件实体自己设计,主要是收件人邮箱、主题、内容等。
@Autowired
private JavaMailSender mailSender;
@Autowired
private TemplateEngine templateEngine;
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.port}")
private String port;
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
@Value("${code.expiration}")
private Long expiration;
private Date sendTime;
@Override
public void send(Email emailDto) throws