使用Golang调用腾讯云邮件模版发送邮件

文章目录

  • 一、腾讯云邮件模版创建
    • 1.1 发信域名配置
    • 1.2 发信地址设置
    • 1.3 发信模版设置
  • 二、通过Golang发送邮件
    • 2.1 代码示例
    • 2.2 代码说明
  • 三、常见问题
    • 3.1 UnsupportedRegion
    • 3.2 InvalidTemplateID

本文档介绍了如何使用Golang编写代码,通过腾讯云邮件服务(SES)发送带有模版的邮件。本示例将展示如何设置并发送带有参数的验证码邮件。

一、腾讯云邮件模版创建

1.1 发信域名配置

  1. 登录腾讯云控制台
    访问 腾讯云控制台,并使用您的腾讯云账号进行登录。

  2. 进入邮件推送服务
    在控制台左侧导航栏中,选择“邮件推送”,进入邮件推送服务管理页面。

  3. 添加发信域名
    在邮件推送管理页面中,找到并点击“域名管理”,然后点击“添加域名”。输入您想要设置为发信域名的域名,并提交。

如果填入的域名是 sampledomain.com 形式,这属于主域名;如果填入的域名是 abc.sampledomail.com 形式,这属于非主域名,是否使用主域名发信,在DNS下面的配置中有存在差异

差异:
如果发信域名非主域名,例如:abc.sampledomain.com,主机记录中填入:_dmarc.abc。
DMARC 记录中必须含有 v 与 p 标记。如果您对 DMARC 有更多的了解,可根据您的需要添加其他标记或修改标记的值。

  1. 获取DNS记录
    添加域名后,系统会生成一组需要配置的DNS记录,包括SPF、DKIM和MX记录。这些记录通常包括:

  2. 配置DNS记录
    根据腾讯云提供的DNS记录说明,在DNS服务提供商的控制台中添加相应的记录。通常需要添加以下记录:

添加SPF记录
记录类型:TXT
主机记录:@
记录值:根据腾讯云邮件推送提供的SPF记录值(v=spf1 include:qcloudmail.com ~all	)添加DKIM记录
记录类型:TXT
主机记录:一般为 dkim._domainkey 或者 (qcloud._domainkey	) 邮件推送服务提供的指定值 (qcloud._domainkey)
记录值:根据腾讯云邮件推送提供的DKIM记录值 (v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBQQUAA4GNADCBiQKBgQCxjYkKZlEUidvb7aBtt425JHzFvWbE8UeADjZRDKtiGlOn2HyK+4I072tIaM5F1azN9QIkveD/0iwOdDFvxqDffc3UEvRAVv7xcaR3tYoeK0WanlYtBuZopBFgZL3jR193hsGRa8ndh0XyJmZP/Kz4c6Z9lvQHeZsVCuHebXzsZwIDAQAB	)添加MX记录
记录类型:MX
主机记录:@
记录值:根据腾讯云邮件推送提供的MX记录值 (mxbiz1.qq.com.)
优先级:通常为10添加 DMARC 记录:
主机记录中填入:_dmarc
记录类型选择:TXT
记录值中填入:v=DMARC1; p=none

以上信息在域名添加的地方,点击 验证 就会出现相关的DNS解析设置

1.2 发信地址设置

进入新建发信地址配置,请选择发信域名,填入邮箱前缀和发件人别名后,单击提交即可完成保存。

注:每个域名仅支持配置10个发信地址。

1.3 发信模版设置

进入新建发信模板配置,填入模板名称,选择对应的模板类型,上传邮件正文,您可以单击预览看效果,最后单击提交即可完成保存。

模板类型中,分为 HTML 富文本和纯文本,

HTML支持更多样式,可呈现丰富的内容,后者仅支持文字,可根据需求选择。

邮件内容中的变量使用{{变量名}}表示,如:尊敬的{{name}}。在普通发送中使用的模板仅支持单一变量,在批量发送中使用的模板支持设置多个变量。

二、通过Golang发送邮件

完成模板创建后,可以使用Golang代码发送邮件。以下是详细代码:

2.1 代码示例

package mainimport ("fmt""log"v20201002 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses/v20201002""github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common""github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
)func main() {// 替换为腾讯云账户的 SecretId 和 SecretKeysecretId := "your-secret-id"secretKey := "your-secret-key"// 替换为邮件模板 IDtemplateId := uint64(12345) // 示例模板ID,请确保正确填写// 替换为您的发件人邮箱和收件人邮箱sender := "sender@example.com"recipient := "recipient@example.com"// 模板参数nowDate := "2024-05-16"veryCode := "123456"// 初始化凭证对象credential := common.NewCredential(secretId,secretKey,)// 设置客户端配置cpf := profile.NewClientProfile()cpf.HttpProfile.Endpoint = "ses.tencentcloudapi.com"// 初始化 SES 客户端client, err := ses.NewClient(credential, "ap-beijing", cpf)if err != nil {log.Fatalf("Failed to initialize SES client: %v", err)}// 创建发送邮件请求对象request := ses.NewSendEmailRequest()request.FromEmailAddress = common.StringPtr(sender)request.Destination = common.StringPtrs([]string{recipient})// 设置模板参数template := ses.Template{}template.TemplateID = common.Uint64Ptr(templateId)template.TemplateData = common.StringPtr(fmt.Sprintf(`{"nowDate":"%s","veryCode":"%s"}`, nowDate, veryCode))request.Template = &template// 设置邮件主题request.Subject = common.StringPtr("Your verification code")request.ReplyToAddresses = common.StringPtr(sender)// 发送邮件response, err := client.SendEmail(request)if err != nil {log.Fatalf("Failed to send email: %v", err)}fmt.Printf("Email sent successfully: %s\n", response.ToJsonString())
}

2.2 代码说明

  • SecretId 和 SecretKey:替换为腾讯云账户的实际值。
  • 模板ID:替换为在腾讯云控制台中获取的模板ID。
  • 发件人和收件人邮箱:替换为实际的发件人和收件人邮箱地址。
  • 模板参数:根据需要替换模板参数的实际值。

三、常见问题

3.1 UnsupportedRegion

如果收到UnsupportedRegion错误,请确认选择的区域支持SES服务。常见支持SES的区域包括ap-beijing, ap-shanghai, ap-guangzhou, ap-singapore等。

3.2 InvalidTemplateID

如果收到InvalidTemplateID错误,请确认:

  • 模版ID正确无误。
  • 模版已通过审核并启用。

参考文档:

  • 腾讯云邮件推送设置文档:https://cloud.tencent.com/document/product/1288/55193
  • 腾讯云邮件推送常见问题文档:https://cloud.tencent.com/document/product/1288/60652
  • 腾讯云邮件推送API文档:https://cloud.tencent.com/document/product/1288/51061
  • 腾讯云邮件推送API 错误码:https://cloud.tencent.com/document/product/1288/51060

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

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

相关文章

【Linux】中的常见的重要指令(中)

目录 一、man指令 二、cp指令 三、cat指令 四、mv指令 五、more指令 六、less指令 七、head指令 八、tail指令 一、man指令 Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: m…

白嫖免费图床!CloudFlare R2太香了!

1 为啥要折腾搭建一个专属图床? 技术大佬写博客都用 md 格式,要在多平台发布,图片就得有外链后续如博客迁移,国内博客网站如掘金,简书,语雀等都做了防盗链,图片无法迁移 2 为啥选择CloudFlare…

对话太医管家CEO徐晶:数字化技术正在为健康管理行业带来新平衡丨数字思考者50人...

ITValue 钛媒体特别专题策划《数字思考者50人》:探访中国深刻的数字化思考者群体。我们理解的“TechThinker”,涵盖了中国数字化浪潮中的技术践行者、政策制定者与投资决策者。在这场长达10年的乘风破浪中,每个人都在分享技术进步的果实&…

leetcode445-Add Two Numbers II

题目 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 [7,2,4,3], l2 [5,6…

文件系统--软硬链接

文章目录 现象软链接硬链接 现象 建立软链接 建立硬链接 // 删除软硬链接都可以用 unlink 指令 unlink soft-link软链接 软链接是一个独立的文件,因为有独立的inode number 软链接的内容:目标文件所对应的路劲字符串如果我们直接查看软链接文件&#…

vue2vue3为什么el-table树状表格失效?

上图所示,后端返回字段中有hasChildren字段。 解决树状表格失效方案: 从后端拿到数据后,递归去掉该字段,然后就能正常显示。(复制下方代码,直接用) 亲测有效,vue2、vue3通用 /**…

如何运用多媒体,打造企业实力展示厅?

企业文化、产品是其长期发展的根本所在,为此越来越多的企业开始选择运用多媒体互动,来打造企业多媒体展厅的方式,对企业文化、品牌形象、产品进行推广宣传,并在多媒体互动装置的支持下,能让客户能够快速且全面的了解企…

基于SSM的“酒店管理系统”的设计与实现(源码+数据库+文档)

基于SSM的“酒店管理系统”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 首页 管理员登录页面 用户管理页面 客房信息查询 酒店详细信息 后台…

MySQL入门学习.数据库组成.存储引擎

存储引擎是 MySQL 数据库的一个重要组成部分,它决定了数据的存储方式、索引方式、事务支持等特性。MySQL 支持多种存储引擎,常见的有 InnoDB、MyISAM、Memory 等。 存储引擎的特点和使用方法: 1. InnoDB: 是 MySQL 默认的存储引…

APP广告变现怎么实现的,背后逻辑是什么?

广告变现的实现主要基于以下几个关键步骤和逻辑: 用户获取与留存:首先,APP需要吸引足够的用户并确保他们的留存率。只有拥有庞大且活跃的用户基础,APP才能吸引广告商投放广告。因此,开发者需要通过优化APP质量、提升用…

数字人实训室解决方案

前言 近年来,政策层面的积极推动为数字人产业铺设了坚实的基石。2021年,“十四五”规划将虚拟数字技术纳入其中,强调技术创新引领行业应用的革新,加速数字人在各领域的实际应用。紧接着的《“十四五”数字经济发展规划》进一步明确…

react封装Spin重复使用loading效果antd

1. 代码封装 import React, { useState } from react; import { Spin } from antd; import ./index.scss;// 自定义Hook useLoadings export const useLoadings () > {// 存储loading的状态,key是loading的唯一标识,value是loading的显示状态 co…

c#将json字符串转为对象

c#将json字符串转为对象&#xff0c;需要加载这个 using Newtonsoft.Json; Rootobject _r JsonConvert.DeserializeObject<Rootobject>(_json);

selenium 库的爬虫实现

selenium 是什么&#xff1f; Selenium 是一个用于自动化 Web 应用程序测试的工具。它提供了一个用于测试网站的框架&#xff0c;可以模拟用户在浏览器中的操作&#xff0c;如点击链接、填写表单、提交数据等。Selenium 可以在多种浏览器和操作系统上运行&#xff0c;并且支持…

Nodejs 第七十三章(网关层)

什么是网关层(getway)&#xff1f; 技术选型fastify 速度快适合网关层 fastify教程上一章有讲 网关层是位于客户端和后端服务之间的中间层&#xff0c;用于处理和转发请求。它充当了请求的入口点&#xff0c;并负责将请求路由到适当的后端服务&#xff0c;并将后端服务的响应…

一个基于HOOK机制的微信机器人

一个基于✨HOOK机制的微信机器人&#xff0c;支持&#x1f331;安全新闻定时推送【FreeBuf&#xff0c;先知&#xff0c;安全客&#xff0c;奇安信攻防社区】&#xff0c;&#x1f46f;Kfc文案&#xff0c;⚡备案查询&#xff0c;⚡手机号归属地查询&#xff0c;⚡WHOIS信息查询…

有哪些地图采集软件可以采集商家数据导出功能?

1.国内商家采集 寅甲地图数据采集软件 寅甲地图数据采集软件一款多关键词多城市同时采集百度地图、360地图、高德地图、搜狗地图、腾讯地图、图吧地图、天地图商家、公司、店铺的手机、座机、地址、坐标等数据信息的软件。 2.国外商家采集 寅甲谷歌地图数据采集软件 专为做…

叶面积指数(LAI)数据、NPP数据、GPP数据、植被覆盖度数据获取

引言 多种卫星遥感数据反演叶面积指数&#xff08;LAI&#xff09;产品是地理遥感生态网推出的生态环境类数据产品之一。产品包括2000-2009年逐8天数据&#xff0c;值域是-100-689之间&#xff0c;数据类型为32bit整型。该产品经过遥感数据获取、计算归一化植被指数、解译植被类…

完成商品SPU管理页面

文章目录 1.引入前端界面1.将前端界面放到commodity下2.创建菜单3.进入前端项目&#xff0c;使用npm添加依赖1.根目录下输入2.报错 chromedriver2.27.2的问题3.点击链接下载压缩包&#xff0c;然后使用下面的命令安装4.再次安装 pubsub-js 成功5.在main.js中引入这个组件 4.修改…

【超详细】固态硬盘新盘验货检测教程

观前声明&#xff1a; 本文使用的固态硬盘为作者自费购买&#xff0c;同时也带有作者一定的主观意见&#xff0c;无任何软件和硬件的推广。 作者本人也正处于学习阶段&#xff0c;本文若有错误或有待改进的地方&#xff0c;欢迎评论区友善讨论~ 一、产品外包装信息检查 PS&…