tencent cloud

邮件推送

动态与公告
产品动态
关于新增独立 IP 增值服务的公告
产品简介
产品概述
产品功能
产品优势
应用场景
规格明细
购买指南
价格说明
快速入门
邮件配置
邮件发送
信誉度等级说明
控制台指南
邮件配置
邮件发送
数据统计
投递回应
API 文档
History
Introduction
API Category
调用方式
域名验证相关接口
邮件相关接口
模板相关接口
统计相关接口
发信地址相关接口
黑名单相关接口
查询发送状态相关接口
批量任务相关接口
自定义黑名单相关接口
Data Types
Error Codes
SMTP 文档
SMTP 发送邮件指南
SMTP 服务地址
Java 调用示例
Go 调用示例
PHP 调用示例
Python 调用示例
C# 调用示例
发送带附件的邮件
错误码
Webhook 文档
邮件通知事件
发件限制
附件类型
常见问题
入门相关问题
计费相关问题
发送限制相关问题
发送功能相关问题
域名相关问题
模板相关问题
身份验证和配置相关问题
独立 IP 相关问题
递送相关问题
API 使用相关问题
回调相关问题
垃圾箱相关问题
安全性相关问题
域名加速配置相关问题
注意事项
其他问题
联系我们

Go 调用示例

PDF
聚焦模式
字号
最后更新时间: 2025-12-15 12:08:02
以下代码示例,Go 语言(版本为1.16)通过 SMTP 发送邮件:
package main

import (
"crypto/tls"
"fmt"
"log"
"net"
"net/smtp"
"encoding/base64"
)

// Test465 for port 465
func Test465() error {
host := "sg-smtp.qcloudmail.com"
port := 465
//控制台创建的发信地址
email := "abc@cd.com"
//控制台设置的SMTP密码
password := "****"
toEmail := "test@test123.com"
ccEmail := "cc@test123.com"
bccEmail := "bcc@test123.com"
header := make(map[string]string)
header["From"] = "test " + "<" + email + ">"
header["To"] = toEmail
header["Cc"] = ccEmail
header["Bcc"] = bccEmail
header["Subject"] = "test subject"
//html格式邮件
header["Content-Type"] = "text/html; charset=UTF-8"
header["Content-Transfer-Encoding"] = "base64"
body := "<!DOCTYPE html>\\n<html>\\n<head>\\n<meta charset=\\"utf-8\\">\\n<title>hello world</title>\\n</head>\\n<body>\\n " +
"<h1>我的第一个标题</h1>\\n <p>我的第一个段落。</p>\\n</body>\\n</html>"
//纯文本格式邮件
//header["Content-Type"] = "text/plain; charset=UTF-8"
//body := "test body"
message := ""
for k, v := range header {
message += fmt.Sprintf("%s: %s\\r\\n", k, v)
}
message += "\\r\\n" + base64.StdEncoding.EncodeToString([]byte(body))
auth := smtp.PlainAuth(
"",
email,
password,
host,
)
err := SendMailWithTLS(
fmt.Sprintf("%s:%d", host, port),
auth,
email,
[]string{toEmail},
[]byte(message),
)
if err != nil {
fmt.Println("Send email error:", err)
} else {
fmt.Println("Send mail success!")
}
return err
}

// Dial return a smtp client
func Dial(addr string) (*smtp.Client, error) {
conn, err := tls.Dial("tcp", addr, nil)
if err != nil {
log.Println("tls.Dial Error:", err)
return nil, err
}

host, _, _ := net.SplitHostPort(addr)
return smtp.NewClient(conn, host)
}

// SendMailWithTLS send email with tls
func SendMailWithTLS(addr string, auth smtp.Auth, from string,
to []string, msg []byte) (err error) {
//create smtp client
c, err := Dial(addr)
if err != nil {
log.Println("Create smtp client error:", err)
return err
}
defer c.Close()
if auth != nil {
if ok, _ := c.Extension("AUTH"); ok {
if err = c.Auth(auth); err != nil {
log.Println("Error during AUTH", err)
return err
}
}
}
if err = c.Mail(from); err != nil {
return err
}
for _, addr := range to {
if err = c.Rcpt(addr); err != nil {
return err
}
}
w, err := c.Data()
if err != nil {
return err
}
_, err = w.Write(msg)
if err != nil {
return err
}
err = w.Close()
if err != nil {
return err
}
return c.Quit()
}

func main() {
Test465()
}


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈