SpringBoot整合腾讯云邮件发送服务非STMP

SpringBoot整合腾讯云邮箱服务

1、pom配置

<!--       腾讯云邮箱服务-->
       <dependency>
          <groupId>com.tencentcloudapi</groupId>
          <artifactId>tencentcloud-sdk-java</artifactId>
          <!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. -->
          <!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
          <version>3.1.830</version>
       </dependency>

2、yaml配置

tenxun:
#  secretId和secretKey来自于:https://console.cloud.tencent.com/cam/capi
  secretId: ""
  secretKey: ""
#  使用腾讯云的接口
  httpProfile: "ses.tencentcloudapi.com"
# 使用的服务器
  sesClient: "ap-hongkong"
# 发送邮箱的一些配置就是昵称,和发送域名
  fromEmailAddress : "云图柜 <kzzby@mail.kzzby.cn>"
# 配置的模板 id 按道理说这里是自定义的,但是由于本系统只能
  templateID : 120897

3、邮箱服务的模板配置

fromEmailAddress来自发信地址 - 邮件配置 - 邮件推送 - 控制台 (tencent.com)

image-20240329153740423

templateID来自

img

模板配置:

image-20240329153914744

这里使用的模板是

image-20240329153940409

html代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>验证码模板</title>
<style>
  body, html {
    height: 100%;
    margin: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #f0f0f0;
    font-family: Arial, sans-serif;
  }

  .verify-container {
    max-width: 600px;
    padding: 20px;
    border-radius: 10px;
    background-color: #ffffff;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 10px;
  }

  .verify-description {
    font-size: 14px;
    color: #666;
    padding: 0 20px;
  }

  .verify-code {
    font-size: 24px;
    font-weight: bold;
    letter-spacing: 3px;
    color: #333;
    margin: 10px 0;
    padding: 10px 20px;
    border: 1px solid #ddd;
    border-radius: 5px;
  }

  .warning {
    font-size: 12px;
    color: #999;
  }
</style>
</head>
<body>

<div class="verify-container">
  <div class="verify-description">您好,您本次操作的验证码为:</div>
  <span class="verify-code">{{Verify}}</span>
  <div class="verify-description">请在5分钟内完成验证。请注意,验证码仅用于本次验证且不可重复使用。为保障账户安全,请勿泄露验证码。</div>
  <div class="warning">超时或一次性使用后验证码将失效。感谢您的理解与配合。</div>
</div>
</body>
</html>

模板等待审核通过后即可使用

需要注意的是变量要变成这样{{Verify}}

  <span class="verify-code">{{Verify}}</span>

4、设置基础配置的bean

package com.hj.imgadmin.tenEml;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@Data
public class TencentCloudConfig {

    @Value("${tenxun.secretId}")
    private String secretId;

    @Value("${tenxun.secretKey}")
    private String secretKey;

    @Value("${tenxun.httpProfile}")
    private String httpProfile;

    @Value("${tenxun.sesClient}")
    private String sesClient;

    @Value("${tenxun.fromEmailAddress}")
    private String fromEmailAddress;

    @Value("${tenxun.templateID}")
    private Long templateID;

    // 省略getter和setter方法
}

5、写服务方法

package com.hj.imgadmin.tenEml;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.ses.v20201002.SesClient;
import com.tencentcloudapi.ses.v20201002.models.SendEmailRequest;
import com.tencentcloudapi.ses.v20201002.models.SendEmailResponse;
import com.tencentcloudapi.ses.v20201002.models.Template;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class EmailService {
    @Resource
    private  TencentCloudConfig config;


    /**
     * 发送验证码邮箱
     * @param subject 主题
     * @param receiverEml 接收者邮箱
     * @param verifyCode 验证码
     * @param templateID 这个自主修改,若采用更自由的配置方法那么就将这个变量加入其中
     */
    public void sendVerifyCodeToEmail(String subject,String receiverEml, String verifyCode) {
        try {
            Credential cred = new Credential(config.getSecretId(), config.getSecretKey());
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint(config.getHttpProfile());
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            SesClient client = new SesClient(cred, config.getSesClient(), clientProfile);

            SendEmailRequest req = new SendEmailRequest();
            req.setFromEmailAddress(config.getFromEmailAddress());

            req.setSubject(subject);
            String[] destination = {receiverEml};
            req.setDestination(destination);

            Template template = new Template();
            template.setTemplateID(120897L); // 替换为您的模板ID
            template.setTemplateData("{\"Verify\":\""+verifyCode+"\"}");
            req.setTemplate(template);

            SendEmailResponse resp = client.SendEmail(req);
            System.out.println(resp);
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
    }
}

6、测试

@Resource
private EmailService emailService;
@Test
void t34(){
    emailService.sendVerifyCodeToEmail("验证码","1245713658@qq.com","FcsRW");
}

控制台输出

com.tencentcloudapi.ses.v20201002.models.SendEmailResponse@4ba88ab5

邮箱显示

image-20240329162512473

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/500293.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务demo(四)nacosfeigngateway

一、gateway使用&#xff1a; 1、集成方法 1.1、pom依赖&#xff1a; 建议&#xff1a;gateway模块的pom不要去继承父工程的pom&#xff0c;父工程的pom依赖太多&#xff0c;极大可能会导致运行报错&#xff0c;新建gateway子工程后&#xff0c;pom父类就采用默认的spring-b…

常用植被物候提取方法 (TIMESATE/R语言/Python)-3.0

文章内容仅用于自己知识学习和分享&#xff0c;如有侵权&#xff0c;还请联系并删除 &#xff1a;&#xff09; 常用植被物候提取方法 (TIMESATE/R语言/Python)-1.0见 link常用植被物候提取方法 (TIMESATE/R语言/Python)-2.0见 link 这里主要介绍一下自己读到的论文&#xff…

虚拟现实(VR)项目的开发工具

虚拟现实&#xff08;VR&#xff09;项目的开发涉及到多种工具&#xff0c;这些工具可以帮助开发者从建模、编程到最终内容的发布。以下是一些被广泛认可的VR开发工具&#xff0c;它们覆盖了从3D建模到交互设计等多个方面。北京木奇移动技术有限公司&#xff0c;专业的软件外包…

【目录整理】(五)

​​​​​Git 基础 Git 详细安装教程文章浏览阅读10w次&#xff0c;点赞9.6k次&#xff0c;收藏1.7w次。Git 是个免费的开源分布式版本控制系统&#xff0c;下载地址为git-scm.com 或者 gitforwindows.org&#xff0c;本文介绍 Git-2.40.0-64-bit.exe 版本的安装方法&#x…

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

3月21日&#xff0c;在巴黎举办的云原生顶级峰会KubeCon EU 2024上 &#xff0c;华为云首席架构师顾炯炯在“Cloud Native x AI&#xff1a;以持续开源创新开启智能时代”的主题演讲中指出&#xff0c;云原生和AI技术的融合&#xff0c;是推动产业深刻变革的关键所在。华为云将…

租用2核4G云服务器优惠价格,阿里云腾讯云京东云报价

当前最新2核4G云服务器多少钱&#xff1f;165元一年&#xff0c;30元3个月。阿里云2核4G服务器165元一年&#xff0c;30元3个月、腾讯云2核4G5M服务器165元一年、京东云2核4G云主机126元1年&#xff0c;华为云也提供2核4G配置云服务器。阿腾云atengyun.com整理2024年最新云服务…

Servlet中的request和respons对象

当我们在地址栏中输入一长串的地址的时候进行访问的时候&#xff0c;服务器&#xff08;Tomcat&#xff09;会给我们生成衣个request对象和reponse. requset对象&#xff1a; 1.获取用户输入的信息进行登录验证 Java给我们提供的是HttpServletRequset接口&#xff0c;并没有…

电脑开机慢怎么办,电脑开机慢解决方法

新电脑呢&#xff0c;开机速度特别快。有很多人会感觉到电脑拿回家以后&#xff0c;一按开机键&#xff0c;六秒七秒&#xff0c;这个电脑就启动起来了&#xff0c;但是用一段时间以后呢&#xff0c;他会明显感觉到这个开机的速度呢&#xff0c;会特别慢&#xff0c;可能从六秒…

真机 ARM64 架构转模拟器 ARM64 架构

本文字数&#xff1a;2051字 预计阅读时间&#xff1a;15分钟 01 需要转换架构的原因 老版 Mac 使用 Intel 芯片&#xff0c;是x86_64架构&#xff0c;相应地在老版 Mac 上运行的模拟器使用的也就是 x86_64架构。 由于模拟器的 x86_64 架构与真机的 arm64、armv7 等架构不冲突&…

是德科技keysight 1169A探头放大器

181/2461/8938产品概述&#xff1a; Agilent Keysight 1169A InfiniiMax II 12 GHz 探测系统设计用于与 DSO91204A 和 DSO91304A Infiniium 示波器配合使用&#xff0c;提供高达 12 GHz 指定的实时带宽&#xff0c;并具有 13 GHz 典型性能。创新的 InfiniiMax 探测系统甚至可以…

双按键IP对讲终端SV-6002D功能简介

ip语音双向对讲系统高速路求助对讲终端 IP对讲终端SV-6002D双按键是一款采用了ARMDSP架构&#xff0c;接收网络音频流&#xff0c;实时解码播放&#xff1b;配置了麦克风输入和扬声器输出&#xff0c;SV-6002D带两路寻呼按键&#xff0c;可实现对讲、广播等功能&#xff0c;作为…

MacOS M1/M2/M3芯片如何安装Python3.6

前言 Mac电脑M芯片安装Python3.6报错。 一般情况下&#xff0c;Mac系统可以使用homebrew来管理安装软件。 brew search搜索发现&#xff0c;最低只能直接安装python3.7版本。 于是从Python官网下载安装包进行安装&#xff0c;确实也没有报错&#xff0c;安装完成后执行总是k…

java 溯本求源之基础(八)之 jar(下篇)

上篇中我们介绍了 Java 类加载顺序、JAR 命令的使用以及 MANIFEST.MF 文件的作用。Java 类加载顺序包括 Bootstrap classes、Extension classes 和 Class Path。JAR 命令是一个归档和压缩工具&#xff0c;用于打包 Java 应用程序。MANIFEST.MF 文件存储打包文件的元信息&#x…

分布式图床项目

一、图床架构分析 二、后台数据处理框架 秒传: 如果上传的文件已经在服务器中存在了,就不需要二次上传了,但是服务器会对这个文件的引用计数加一,这样服务器就知道这个文件是多个人持有的。先对上传的文件进行 md5 校验来判断服务器中已经存在相同的文件了(同样的文件拿到…

【面经八股】搜广推方向:面试记录(十一)

【面经&八股】搜广推方向:面试记录(十一) 文章目录 【面经&八股】搜广推方向:面试记录(十一)1. 自我介绍2. 实习经历问答4. 编程题5. 反问1. 自我介绍 。。。。。。 2. 实习经历问答 就是对自己实习事情要足够的清晰,不熟的不要写在简历上!!! 其中,有个 …

flink: 将接收到的tcp文本流写入HBase

一、依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

Redis(一) redis配置 | 如何连接redis服务器 | 基本数据类型 | 基本全局命令

文章目录 前言Redis 配置文件连接 redis 服务器Redis 常见数据类型Redis 基本全局命令set 和 get 命令KEYS 命令EXISTS 命令DEL 命令EXPIRE 和 TTL 命令Redis 过期策略定时器和时间轮的方式实现过期key的及时删除 TYPE 命令 前言 本篇文章将介绍我们在 Linux 环境下安装了 Red…

bizcharts中LineChart时间戳使用moment转化出现Invalid Date

文章目录 一、前言1.1、问题1.2、解决 二、bizcharts三、moment.js四、在线源码五、最后 一、前言 1.1、问题 最近在使用bizcharts绘制折线图LineChart的时候&#xff0c;发现X轴的时间显示成了Invalid Date。如下图所示&#xff1a; 发现是后端返回了时间戳字符串"1572…

增强现实(AR)的开发工具

增强现实&#xff08;AR&#xff09;的开发工具涵盖了一系列的软件和平台&#xff0c;它们可以帮助开发者创造出能够将虚拟内容融入现实世界的应用程序。以下是一些在AR领域内广泛使用的开发工具。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎…

计算机网络——30SDN控制平面

SDN控制平面 SDN架构 数据平面交换机 快速、简单&#xff0c;商业化交换设备采用硬件实现通用转发功能流表被控制器计算和安装基于南向API&#xff0c;SDN控制器访问基于流的交换机 定义了哪些可以被控制哪些不能 也定义了和控制器的协议 SDN控制器&#xff08;网络OS&#…