文章目錄
- 一、騰訊云郵件模版創建
- 1.1 發信域名配置
- 1.2 發信地址設置
- 1.3 發信模版設置
- 二、通過Golang發送郵件
- 2.1 代碼示例
- 2.2 代碼說明
- 三、常見問題
- 3.1 UnsupportedRegion
- 3.2 InvalidTemplateID
本文檔介紹了如何使用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 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