您的位置:首页 > 科技 > 能源 > 使用Golang调用腾讯云邮件模版发送邮件

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

2024/12/23 9:29:12 来源:https://blog.csdn.net/cljdsc/article/details/139189311  浏览:    关键词:使用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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com