文章目录
本文档介绍了如何使用Golang编写代码,通过腾讯云邮件服务(SES)发送带有模版的邮件。本示例将展示如何设置并发送带有参数的验证码邮件。
一、腾讯云邮件模版创建
1.1 发信域名配置
-
登录腾讯云控制台
访问 腾讯云控制台,并使用您的腾讯云账号进行登录。 -
进入邮件推送服务
在控制台左侧导航栏中,选择“邮件推送”,进入邮件推送服务管理页面。 -
添加发信域名
在邮件推送管理页面中,找到并点击“域名管理”,然后点击“添加域名”。输入您想要设置为发信域名的域名,并提交。
如果填入的域名是 sampledomain.com 形式,这属于主域名;如果填入的域名是 abc.sampledomail.com 形式,这属于非主域名,是否使用主域名发信,在DNS下面的配置中有存在差异
差异:
如果发信域名非主域名,例如:abc.sampledomain.com,主机记录中填入:_dmarc.abc。
DMARC 记录中必须含有 v 与 p 标记。如果您对 DMARC 有更多的了解,可根据您的需要添加其他标记或修改标记的值。
-
获取DNS记录
添加域名后,系统会生成一组需要配置的DNS记录,包括SPF、DKIM和MX记录。这些记录通常包括: -
配置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 := "[email protected]"
recipient := "[email protected]"
// 模板参数
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