AWS SES服务 Golang接入教程(排坑版)
因为刚来看的时候 也迷迷糊糊的 所以 先讲概念 再上代码
一 基础设置
这里需要完成两个最基础的设置任务
1 是验证至少一个收件电子邮箱
2 【很关键】是验证发送域。即身份里的域类型的身份。(可以理解为配置你的域名邮箱服务器(SMPT)为亚马逊提供的服务器)。点击“待验证”可以看到 一份 DNS 解析记录,将此份记录逐个添加到你域名的DNS服务器。
如下图(我用的是Cloudflare)
除了我打码的部分 其余都是按着AWS SES要求 新增加的。可以一个一个添加,也可以下载.isv文件上传。我这里上传失败,手动添加的。
在此过程中,有一个MX类型的记录要特别注意,有坑。
SES给的配置值如下:
name:noreply
value:10 feedback-smtp.ap-southeast-1.amazonses.com
如果你把这个值整个复制进去 是不行的。
10应该理解为优先级 单独设置。这样就OK了。
配置好后 等一会就可以看到任务二也被验证完成了。
验证完成后,你注册AWS的邮箱会收到通知短信
意味着你可以使用任何以@yourdomain.com
结尾的邮箱地址发送邮件。
二 身份
因为是沙箱环境 所以 身份里是你要发邮件测试的 收件邮箱。创建身份后 会收到邮件,在邮箱里确认后,就可以看到此身份为已验证的。
测试环境你只能给认证过的邮箱发信。
三访问
SMTP凭证–操控API
在SMTP设置那里 可以创建新的SMTP凭证,
这里只需要密钥的key value和正确的region就可以建立可用的session链接。
var(
accessKey = "AKIXXXXU2BBBBBX2TET" //""
secretKey = "IXXXXXWRwD9q1cgyQQEccXXXXXXXXmAN9g" //""
region = "ap-southeast-1"
)
func AWSInit() (*session.Session, error) {
//只要不修改session,session就可以安全的并发使用。
return session.NewSession(&aws.Config{
Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""),
//Endpoint: aws.String(endpoint),
Region: aws.String(region),
//S3ForcePathStyle: aws.Bool(false),
//SDK 支持使用客户端 TLS 证书配置的环境和会话选项,这些证书作为客户端 TLS 握手的一部分发送以进行客户端身份验证。
//如果使用,则需要 Cert 和 Key 值。如果缺少一个,或者无法加载文件的内容,则会返回一个错误。
//ClientTLSCert: nil,
//ClientTLSKey: nil,
})
}
四 测试
sender 是 任何@yourdomain.com
例如:contact@yourdomain.con
因为是沙箱环境 所以 recipients 是 你在【身份】里认证过的
注意 recipients收件人 必须是合规的邮箱格式,否则会报错
测试结果 :很丝滑,不愧是AWS SES
ps
刚刚又收到了一个邮件 说是探测到了MX配置的那个noreply 具体还没明白 后边再研究下