使用腾讯云模板发送短信验证码

目录

  • 学习目标:
  • 学习内容:
  • 学习时间:
  • 学习过程:
    • demo结构图:
    • 效果图:
  • 配置准备:
    • 依赖pom.xml
    • application.properties:
    • application.yml
    • 腾讯云模板:(html)
    • java程序:
    • service:
    • serviceImpl:(核心代码)

学习目标:

  • 使用腾讯云模板发送短信验证码

学习内容:

内容:

  1. 首先导入下面的配置信息
  2. .修改yml中的配置信息为自己的邮件信息
  3. 修改mailServiceImpl中的发送人和接受人邮箱
  4. 我们在controller中发起请求就可以发送邮箱了

学习时间:

时间:

  • 2022.10.8

学习过程:

demo结构图:

在这里插入图片描述

效果图:

在这里插入图片描述

配置准备:

依赖pom.xml

代码语言:javascript
复制
<dependencies>
        <!--thymeleaf-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    &lt;dependency&gt;
        &lt;groupId&gt;ognl&lt;/groupId&gt;
        &lt;artifactId&gt;ognl&lt;/artifactId&gt;
        &lt;version&gt;3.1.26&lt;/version&gt;
    &lt;/dependency&gt;


    &lt;!-- 邮箱验证--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-mail&lt;/artifactId&gt;
    &lt;/dependency&gt;


    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
    &lt;/dependency&gt;


&lt;/dependencies&gt;</code></pre></div></div><h3 id="696hu" name="application.properties:">application.properties:</h3><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0"># 应用名称

spring.application.name=thymeleaf_01_helloword

THYMELEAF (ThymeleafAutoConfiguration)

开启模板缓存(默认值: true )

spring.thymeleaf.cache=false

检查模板是否存在,然后再呈现

spring.thymeleaf.check-template=true

检查模板位置是否正确(默认值 :true )

spring.thymeleaf.check-template-location=true
#Content-Type 的值(默认值: text/html )
spring.thymeleaf.content-type=text/html

开启 MVC Thymeleaf 视图解析(默认值: true )

spring.thymeleaf.enabled=true

模板编码

spring.thymeleaf.encoding=UTF-8

要被排除在解析之外的视图名称列表,⽤逗号分隔

spring.thymeleaf.excluded-view-names=

要运⽤于模板之上的模板模式。另⻅ StandardTemplate-ModeHandlers( 默认值: HTML5)

spring.thymeleaf.mode=HTML5

在构建 URL 时添加到视图名称前的前缀(默认值: classpath:/templates/ )

spring.thymeleaf.prefix=classpath:/templates/

在构建 URL 时添加到视图名称后的后缀(默认值: .html )

spring.thymeleaf.suffix=.html

application.yml

代码语言:javascript
复制
server:
port: 8080
spring:
mail:
# SMTP服务器
host: smtp.qq.com
# 发送验证码邮箱
username: 2181063167@qq.com
# 授权码
password: xxhciyihgkmxxxx
# 编码
default-encoding: utf-8
port: 587
# 配置SSL 加密工厂
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true

腾讯云模板:(html)

template.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<div>
<includetail>
<div align="center">
<div class="open_email" style="margin-left: 8px; margin-top: 8px; margin-bottom: 8px; margin-right: 8px;">
<div>
<br>
<span class="genEmailContent">
<div id="cTMail-Wrap"
style="word-break: break-all;box-sizing:border-box;text-align:center;min-width:320px; max-width:660px; border:1px solid #f6f6f6; background-color:#f7f8fa; margin:auto; padding:20px 0 30px; font-family:'helvetica neue',PingFangSC-Light,arial,'hiragino sans gb','microsoft yahei ui','microsoft yahei',simsun,sans-serif">
<div class="main-content" style="">
<table style="width:100%;font-weight:300;margin-bottom:10px;border-collapse:collapse">
<tbody>
<tr style="font-weight:300">
<td style="width:3%;max-width:30px;"></td>
<td style="max-width:600px;">
<!-- LOGO -->
<div id="cTMail-logo" style="width:92px; height:25px;">
<!--替换跳转链接 -->
<a href="">
<!--替换LOGO图片-->
<img border="0" src="https://imgcache.qq.com/open_proj/proj_qcloud_v2/mc_2014/cdn/css/img/mail/logo-pc.png"
style="width:92px; height:25px;display:block">
</a>
</div>
<!--页面上边的蓝色分割线-->
<p style="height:2px;background-color: #00a4ff;border: 0;font-size:0;padding:0;width:100%;margin-top:20px;"></p>

                                        &lt;div id=&#34;cTMail-inner&#34; style=&#34;background-color:#fff; padding:23px 0 20px;box-shadow: 0px 1px 1px 0px rgba(122, 55, 55, 0.2);text-align:left;&#34;&gt;
                                            &lt;table style=&#34;width:100%;font-weight:300;margin-bottom:10px;border-collapse:collapse;text-align:left;&#34;&gt;
                                                &lt;tbody&gt;
                                                  &lt;!-- 第一个单元格--&gt;
                                                &lt;tr style=&#34;font-weight:300&#34;&gt;
                                                       &lt;!--左侧表格,设置左边距用的--&gt;
                                                    &lt;td style=&#34;width:3.2%;max-width:30px;&#34;&gt;&lt;/td&gt;
                                                       &lt;!--中间表格,正文使用--&gt;
                                                    &lt;td style=&#34;max-width:480px;text-align:left;&#34;&gt;
                                                          &lt;!-- 以下是正文
                                                           可以是标题--&gt;
                                                        &lt;h1 id=&#34;cTMail-title&#34; style=&#34;font-size: 20px; line-height: 36px; margin: 0px 0px 22px;&#34;&gt;
                                                            【本当迷服务平台】欢迎注册VIP服务
                                                        &lt;/h1&gt;

                                                        &lt;p id=&#34;cTMail-userName&#34; style=&#34;font-size:14px;color:#333; line-height:24px; margin:0;&#34;&gt;
                                                            尊敬的VIP用户,您好!
                                                        &lt;/p&gt;


                                                        &lt;p class=&#34;cTMail-content&#34; style=&#34;line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;&#34;&gt;
                                                            &lt;span style=&#34;color: rgb(51, 51, 51); font-size: 14px;&#34;&gt;
                                                                欢迎注册VIP服务,登录验证码为 。&lt;span th:text=&#34;${code}&#34;&gt;&lt;/span&gt;
                                                            &lt;/span&gt;
                                                        &lt;/p&gt;

                                                        &lt;p class=&#34;cTMail-content&#34; style=&#34;line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;&#34;&gt;
                                                            &lt;span style=&#34;color: rgb(51, 51, 51); font-size: 14px;&#34;&gt;完成注册,请点击下面按钮验证邮箱。
                                                                &lt;span style=&#34;font-weight: bold;&#34;&gt;非本人操作可忽略。&lt;/span&gt;
                                                            &lt;/span&gt;
                                                        &lt;/p&gt;

                                                           &lt;!--按钮--&gt;
                                                        &lt;p class=&#34;cTMail-content&#34;
                                                           style=&#34;font-size: 14px; color: rgb(51, 51, 51); line-height: 24px; margin: 6px 0px 0px; word-wrap: break-word; word-break: break-all;&#34;&gt;
                                                               &lt;!--下面替换成自己的链接  --&gt;
                                                            &lt;a id=&#34;cTMail-btn&#34; href=&#34;https://www.bdmcom.cn&#34; title=&#34;本当迷博客&#34;
                                                               style=&#34;font-size: 16px; line-height: 45px; display: block; background-color: rgb(0, 164, 255); color: rgb(255, 255, 255); text-align: center; text-decoration: none; margin-top: 20px; border-radius: 3px;&#34;&gt;
                                                                点击此处验证邮箱
                                                            &lt;/a&gt;
                                                        &lt;/p&gt;

                                                        &lt;p class=&#34;cTMail-content&#34; style=&#34;line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;&#34;&gt;
                                                            &lt;span style=&#34;color: rgb(51, 51, 51); font-size: 14px;&#34;&gt;
                                                                &lt;br&gt;
                                                                无法正常显示?请复制以下链接至浏览器打开:
                                                                &lt;br&gt;
                                                                &lt;a href=&#34;&#34; title=&#34;&#34;
                                                                   style=&#34;color: rgb(0, 164, 255); text-decoration: none; word-break: break-all; overflow-wrap: normal; font-size: 14px;&#34;&gt;
                                                                    这里是激活账号的链接
                                                                &lt;/a&gt;
                                                            &lt;/span&gt;
                                                        &lt;/p&gt;

                                                           &lt;!--来个署名--&gt;
                                                        &lt;dl style=&#34;font-size: 14px; color: rgb(51, 51, 51); line-height: 18px;&#34;&gt;
                                                            &lt;dd style=&#34;margin: 0px 0px 6px; padding: 0px; font-size: 12px; line-height: 22px;&#34;&gt;
                                                                &lt;p id=&#34;cTMail-sender&#34; style=&#34;font-size: 14px; line-height: 26px; word-wrap: break-word; word-break: break-all; margin-top: 32px;&#34;&gt;
                                                                    此致
                                                                    &lt;br&gt;
                                                                    &lt;strong&gt;本当迷服务团队&lt;/strong&gt;
                                                                &lt;/p&gt;
                                                            &lt;/dd&gt;
                                                        &lt;/dl&gt;
                                                    &lt;/td&gt;
                                                    &lt;!--右侧表格,设置右边距用的  --&gt;
                                                    &lt;td style=&#34;width:3.2%;max-width:30px;&#34;&gt;&lt;/td&gt;
                                                &lt;/tr&gt;
                                                &lt;/tbody&gt;
                                            &lt;/table&gt;
                                        &lt;/div&gt;

                                           &lt;!--页面底部的推广 --&gt;
                                        &lt;div id=&#34;cTMail-copy&#34; style=&#34;text-align:center; font-size:12px; line-height:18px; color:#999&#34;&gt;
                                            &lt;table style=&#34;width:100%;font-weight:300;margin-bottom:10px;border-collapse:collapse&#34;&gt;
                                                &lt;tbody&gt;
                                                &lt;tr style=&#34;font-weight:300&#34;&gt;
                                                      &lt;!-- 左,左边距--&gt;
                                                    &lt;td style=&#34;width:3.2%;max-width:30px;&#34;&gt;&lt;/td&gt;
                                                       &lt;!--中,正文 --&gt;
                                                    &lt;td style=&#34;max-width:540px;&#34;&gt;

                                                        &lt;p style=&#34;text-align:center; margin:20px auto 14px auto;font-size:12px;color:#999;&#34;&gt;
                                                            此为系统邮件,请勿回复。
                                                               可以加个链接  
                                                            &lt;a href=&#34;&#34;
                                                               style=&#34;text-decoration:none;word-break:break-all;word-wrap:normal; color: #333;&#34; target=&#34;_blank&#34;&gt;
                                                                取消订阅
                                                            &lt;/a&gt;
                                                        &lt;/p&gt;

                                                           可以加个图片,公众号二维码之类的  
                                                        &lt;p id=&#34;cTMail-rights&#34; style=&#34;max-width: 100%; margin:auto;font-size:12px;color:#999;text-align:center;line-height:22px;&#34;&gt;
                                                            &lt;img border=&#34;0&#34; src=&#34;http://imgcache.qq.com/open_proj/proj_qcloud_v2/tools/edm/css/img/wechat-qrcode-2x.jpg&#34;
                                                                 style=&#34;width:64px; height:64px; margin:0 auto;&#34;&gt;
                                                            &lt;br&gt;
                                                            关注服务号,移动管理云资源
                                                            &lt;br&gt;
                                                            &lt;img src=&#34;https://imgcache.qq.com/open_proj/proj_qcloud_v2/gateway/mail/cr.svg&#34; style=&#34;margin-top: 10px;&#34;&gt;
                                                        &lt;/p&gt;
                                                    &lt;/td&gt;
                                                       &lt;!--右,右边距 --&gt;
                                                    &lt;td style=&#34;width:3.2%;max-width:30px;&#34;&gt;&lt;/td&gt;
                                                &lt;/tr&gt;
                                                &lt;/tbody&gt;
                                            &lt;/table&gt;
                                        &lt;/div&gt;
                                    &lt;/td&gt;
                                    &lt;td style=&#34;width:3%;max-width:30px;&#34;&gt;&lt;/td&gt;
                                &lt;/tr&gt;
                                &lt;/tbody&gt;
                            &lt;/table&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/span&gt;
                &lt;br&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/includetail&gt;

</div>

</body>
</html>

java程序:

controller
LoginController

请求地址::http://localhost:8080/login

代码语言:javascript
复制
package com.bdm.controller;

import com.bdm.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**

  • @code Description

  • @code author 本当迷

  • @code date 2022/8/21-7:11
    */
    @RestController
    @RequestMapping("login")
    public class LoginController {

    @Autowired
    public MailService mailService;

    @GetMapping
    public String login(){
    mailService.sendMail();
    return "发送成功!";
    }
    }

service:

MailService

代码语言:javascript
复制
/**

  • @code Description

  • @code author 本当迷

  • @code date 2022/8/21-7:20
    */
    public interface MailService {
    void sendMail();
    }

  • serviceImpl:(核心代码)

    mailServiceImpl

    代码语言:javascript
    复制
    package com.bdm.service.impl;

    import com.bdm.service.MailService;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Component;
    import org.thymeleaf.TemplateEngine;
    import org.thymeleaf.context.Context;
    import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

    import javax.mail.internet.MimeMessage;

    /**

    • @code Description

    • @code author 本当迷

    • @code date 2022/8/21-7:11
      */
      @Component
      public class mailServiceImpl implements MailService {
      @Autowired
      private JavaMailSender javaMailSender;

      //发送人
      public String from = "2181063167@qq.com";
      //接收人
      public String to = "2181063167@qq.com";
      //标题
      public String subject = "测试邮件";

      // 验证码
      public String code = "1234";

      public void sendMail() {
      // 创建模板引擎
      final TemplateEngine engine = new TemplateEngine();
      // 读取磁盘中的模板文件
      final ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
      // 设置引擎使用 resolver
      engine.setTemplateResolver(resolver);
      // 指定数据
      final Context context = new Context();
      // 把验证码的变量替换 1234 就可以了
      context.setVariable("code", code);

       // 处理模板
       final String html = engine.process(&#34;template.html&#34;, context);
       System.out.println(html);
      
      
       try {
           MimeMessage message = javaMailSender.createMimeMessage();
           MimeMessageHelper helper = new MimeMessageHelper(message,true);
           helper.setFrom(from+&#34;(本当迷)&#34;);
           helper.setTo(to);
           helper.setSubject(subject);
           helper.setText(html,true);
      
           javaMailSender.send(message);
       } catch (Exception e) {
           e.printStackTrace();
       }
      

      }

      @Test
      public void test01(){
      // 创建模板引擎
      final TemplateEngine engine = new TemplateEngine();
      // 读取磁盘中的模板文件
      final ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
      // 设置引擎使用 resolver
      engine.setTemplateResolver(resolver);
      // 指定数据
      final Context context = new Context();
      context.setVariable("code", "1234");

       // 处理模板
       final String html = engine.process(&#34;template.html&#34;, context);
       System.out.println(html);
      

      }
      }