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


本文档介绍了如何使用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 main

import (
    "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 和 SecretKey
    secretId := "your-secret-id"
    secretKey := "your-secret-key"
    
    // 替换为邮件模板 ID
    templateId := 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
  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值