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

news/2024/7/26 10:28:17/文章来源:https://blog.csdn.net/qq_18827959/article/details/137149734

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/capisecretId: ""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 {@Resourceprivate  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); // 替换为您的模板IDtemplate.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

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

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

相关文章

Gmail多账号防封攻略,看这一篇就够了

您的业务活动需要多个 Gmail 帐户吗&#xff1f;出海畅游&#xff0c;Gmail账号是少不了的工具之一&#xff0c;可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台&#xff0c;可以说是海外网络的“万能锁”。但是大家都知道&#xff0c;以上这些平台注册多账号如果产生关…

【OpenCV】 OpenCV (C++) 与 OpenCvSharp (C#) 之间数据通信

OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Ruby、MATLAB等语…

设计定时任务实现数据同步的最佳实践

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、选择合适的定时任务框架 Quartz Spring 的 TaskScheduler JDK 的 ScheduledE…

商品服务 - 三级分类

1.递归查询树形结构 Overridepublic List<CategoryEntity> listWithTree() {//1.查出所有分类List<CategoryEntity> all this.list();//2.组装成父子的属性结构List<CategoryEntity> level1Menus all.stream().filter(c -> c.getParentCid().equals(0L)…

【Java初阶(七)】接口

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1.前言2.接口2.1语法规则2.2接口使用2.3接口特性2.4实现多个接口2.5接口使用实例2.6Clonable接口和深拷贝 3.Object类3.1对象比较equals方法3.2hashcod…

基于B/S快递取件预约系统设计与实现【Java毕业设计·安装调试·代码讲解·文档报告】

&#x1f34a;作者&#xff1a;北友舰长 &#x1f34a;简介&#xff1a;从事毕业论文代写&#xff0c;计算机毕业设计定制&#xff0c;Java程序开发&#xff0c;可定制化项目、 项目源码、代码讲解、文档撰写、ppt制作等等 &#x1f345; 文末获取源码联系 &#x1f447;&#…

【pytest、playwright】多账号同时操作

目录 方案实现思路&#xff1a; 方案一&#xff1a; 方案二&#xff1a; 方案实现思路&#xff1a; 依照上图所见&#xff0c;就知道&#xff0c;一个账号是pytest-playwright默认的环境&#xff0c;一个是 账号登录的环境 方案一&#xff1a; 直接上代码&#xff1a; imp…

沃尔玛百货有限公司 企业网页设计制作 企业html网页成品 跨国公司网页设计开发 web前端开发,html+css网页设计素材,静态html学生网页成品源码

沃尔玛百货有限公司 WalMart 7页面 企业主题 带jquery图片轮播特效 滚动文字 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.or…

【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 内容详情 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

Java复习第九天学习笔记(集合框架),附有道云笔记链接

【有道云笔记】九 3.26 集合框架 https://note.youdao.com/s/TLZg8ip0 一、简介 ArrayList: 有序(放进去顺序和拿出来顺序一致)&#xff0c;可重复 HashSet: 无序(放进去顺序和拿出来顺序不一定一致)&#xff0c;不可重复 Test public void test1() { //数组最大问题是长度固…

区块链食品溯源案例实现(二)

引言 随着前端界面的完成&#xff0c;我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求&#xff0c;调用智能合约的方法获取食品溯源信息&#xff0c;并将结果返回给前端。 通过前后端的整合&#xff0c;我们可以构建一个食品溯源系统&#xf…

【详细讲解Android Debug Bridge各种命令及用法的文章】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…

JDK |SDK |JRE 的区别

转自&#xff1a;【JVM与性能调优】JDK入门知识&#xff0c;别再说你分不清JRE、JDK、SDK三者的区别了_jdk sdk-CSDN博客 1.JDK体系结构 2.三者区别

ASR-LLM-TTS 大模型对话实现案例;语音识别、大模型对话、声音生成

参考:https://blog.csdn.net/weixin_42357472/article/details/136305123(llm+tts) https://blog.csdn.net/weixin_42357472/article/details/136411769 (asr+vad) 这里LLM用的是chatglm;电脑声音播报用的playsound 1、实时语音识别版本 注意:暂时这项目有个缺陷就是tts…

SQLBolt,一个练习SQL的宝藏网站

知乎上有人问学SQL有什么好的网站&#xff0c;这可太多了。 我之前学习SQL买了本SQL学习指南&#xff0c;把语法从头到尾看了个遍&#xff0c;但仅仅是心里有数的程度&#xff0c;后来进公司大量的写代码跑数&#xff0c;才算真真摸透了SQL&#xff0c;知道怎么调优才能最大化…

精彩解读:短链接应用全方位探究

title: 精彩解读&#xff1a;短链接应用全方位探究 date: 2024/4/2 17:44:50 updated: 2024/4/2 17:44:50 tags: 短链接定义映射算法原理简洁美化优势工作流程解析安全隐私保护商业营销应用技术趋势发展 1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务&#…

红米手机Redmi 不会自动弹出USB调试选项,如何处理?(红米小米均适用)

参考&#xff1a; 红米手机Redmi 不会自动弹出USB调试选项&#xff0c;如何处理&#xff1f;&#xff08;红米小米均适用&#xff09; - 知乎 以红米9A为例&#xff1b; 【设置】菜单进入后&#xff0c;找到【我的设备】&#xff0c; 选择【全部参数】&#xff0c; 对准miui版…

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

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

工艺品wordpress外贸主题

工艺品wordpress外贸主题 简约大气的wordpress外贸主题&#xff0c;适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377

Spring面试常见问题

目录 1、为什么要用Spring框架&#xff1f;2、有了spring为什么又出现了 springboot&#xff1f;3、springboot出现后为什么又出现了spring cloud&#xff1f;4、SpringBoot自动配置&#xff08;重点&#xff09;5、SpringBoot启动流程&#xff08;重点&#xff09;6、简单谈一…