一、导入Email邮件库
编辑pom.xml
文件,添加依赖库
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二、设置SMTP服务器信息
发送邮件是通过SMTP服务器来完成的,所以我们要配置一下SMTP服务器的连接信息。这里我以163的SMTP服务器为例(因为163安全检查没有腾讯严格),并且提前已经开启了163邮箱的SMTP功能。没有163邮箱的可以去注册一下:https://mail.163.com/
spring:
……
mail:
default-encoding: UTF-8
# 163邮箱的地址为smtp.163.com,直接填写即可
host: smtp.163.com
# 你申请的163邮箱
username: xxxxxx@163.com
# 注意密码是在开启smtp/pop3时自动生成的,不是邮箱密码,记得保存一下,不然就找不到了
password: xxxxxxxxxxx
接下来我们把系统内的常用邮箱声明一下,以后会用到这些邮箱往外发送邮件,或者给这些邮箱发送内部邮件。
emos:#项目名称
……
email:
#发送者邮箱
system: *********@163.com
#接收者邮箱
receive: **********@qq.com
三、编写service接口,以及其实现类(接口和controller自己想)
@Service
public class VerifyServiceImpl implements VerifyService {
@Resource
JavaMailSender sender; //一个用于发送邮箱的类
@Resource
StringRedisTemplate template; //用于Redis数据库操作
@Value("${emos.email.system}")
private String mailbox;
@Value("${emos.email.receive}")
private String mail;
@Override
public void sendVerifyCode(String mail) {
SimpleMailMessage message = new SimpleMailMessage();
//邮件标题
message.setSubject("【xxx网站】您的注册码");
//设置随机数作为验证码
Random random = new Random();
int code = random.nextInt(89999) + 10000;
//用redis保存验证码
//提前验证一下,如果发送了多次则删除上一次的验证码,保留最新的验证码
if (template.opsForValue().get("verify:code:" + mail) != null){
template.delete("verify:code:" + mail);
}
template.opsForValue().set("verify:code:" + mail, code + "", 5, TimeUnit.MINUTES);//设置五分钟过期时间
//邮件内容
message.setText("您的验证码是:"+code+",五分钟有效,请及时完成注册。若不是本人操作请忽略");
message.setFrom(mailbox); //谁发送,必须和yal文件中的账号一致
message.setCc(mailbox);//为了防止SMTP服务器认定为垃圾邮件而拦截,所以抄送给发件人
message.setTo(mail); //谁接收
sender.send(message);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199722.html