栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于SpringBoot实现邮箱验证码功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于SpringBoot实现邮箱验证码功能

0. 准备工作

 

 

 

1. 导入对应的坐标


    org.springframework.boot
    spring-boot-starter-mail
2. 创建一个邮件内容的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EmailDto {
    
    @NotEmpty
    private String to;

    
    @NotBlank
    private String subject;

    
    @NotBlank
    private String content;

}
3. 设计发送邮件的服务类

这里只展示实现类

3.1 ymal文件设计
spring: 
 mail:
    host: smtp.qq.com
    username: 2282527360@qq.com   # 收件人(我这里写死了,这个可以根据业务场景灵活变换)
    password: qkmhrhamgtjyebaa    # 这个不是你账号的密码,而是QQ邮箱pop/stmp的授权码
    default-encoding: UTF-8
    port: 465
    protocol: smtps    # 这个必须特殊声明为smtp,不然会报异常
3.2 发送纯文本内容的邮件
@Service
@Slf4j
public class EmailServiceImpl{
    @Autowired
    private JavaMailSender mailSender;

    @Override
    public void sendSimpleEmail(EmailDto emailDto) { //在emailDto类中封装验证码信息
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);//设置发件人
        message.setTo(emailDto.getTo());//设置收件人
        message.setSubject(emailDto.getSubject());//设置邮件的主题(标题)
        message.setText(emailDto.getContent());//设置邮件的内容

        try {
            mailSender.send(message);
            log.info("简单邮件已经发送。");
        } catch (Exception e) {
            log.info("简单邮件发送失败",e);
        }
    }
}

这里说明一点:

        JavaMailSender这个类是发送邮件的功能类由它来实现发送邮件的操作

        SimpleMailMessage这个类是构建了邮件的内容,比如收件人标题啥的

 效果图如下:

 

 3.3 发送html格式的邮件

3.3.1 引入对应的pom坐标



    org.springframework.boot
    spring-boot-starter-thymeleaf

3.3.2 邮件模板




    
    邮箱验证码
    


尊敬的用户:您好! 您正在进行注册账号操作,请在验证码中输入以下验证码完成操作: 注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全
(工作人员不会向你索取此验证码,请勿泄漏!)

此为系统邮件,请勿回复
请保管好您的邮箱,避免账号被他人盗用

——xxx平台

 3.3.3 设计实现类

@Override
    public void sendHtmlEmail(EmailDto emailDto) throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        helper.setSubject("xxx验证码"); // 邮件的标题
        helper.setFrom("xxxx@qq.com"); // 发送者
        helper.setTo("xxxx@qq.com");    // 接受者
        helper.setSentDate(new Date()); //时间

        // 这里引入的是Template的Context
        Context context = new Context();
        //设置模板中的变量
        context.setVariable("verifyCode", Arrays.asList("1234".split("")));
        // 第一个参数为模板的名称
        String process = templateEngine.process("email.html", context); //这里不用写全路径
        // 第二个参数true表示这是一个html文本
        helper.setText(process,true);
        mailSender.send(mimeMessage);

    }

注意的几个点:

        1. templateEngine.process()这里不要写全路径名,不然会找不到文件

        2. html文件注意头部分,不然可能参数无法替换

效果图如下:

 

 字符串可以随意替换

相关api的用法可以参考:JavaMail API的使用,一看就会的那种_独泪了无痕的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号