阿里云邮件服务 go
官方示例:https://api.aliyun.com/api-tools/sdk/Dm?version=2015-11-23&language=go-tea&tab=primer-doc
发送邮件:https://help.aliyun.com/zh/direct-mail/api-dm-2015-11-23-singlesendmail
准备配置
go
package ali
import (
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/aliyun/credentials-go/credentials"
)
var aliAccessCredential *credentials.Credential
func InitAliCredential(accessKeyId, accessKeySecret string) {
config := new(credentials.Config).
SetType("access_key").
SetAccessKeyId(accessKeyId).
SetAccessKeySecret(accessKeySecret)
akCredential, err := credentials.NewCredential(config)
if err != nil {
panic(err)
}
aliAccessCredential = &akCredential
}
func GetAliConfig() *openapi.Config {
config := &openapi.Config{}
config.Credential = *aliAccessCredential
return config
}发送邮件 API 调用
go
package ali
import (
"fmt"
dm20151123 "github.com/alibabacloud-go/dm-20151123/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
yamlConfig "my-gin-01/config"
)
func AliSendCodeEmail(email string, code string) {
// todo
config := GetAliConfig()
// Endpoint 请参考 https://api.aliyun.com/product/Dm
config.Endpoint = tea.String("dm.aliyuncs.com")
client, err := dm20151123.NewClient(config)
if err != nil {
panic(err)
}
myConfig, err := yamlConfig.GetYamlConfig()
if err != nil {
panic(err)
}
accountName := myConfig.Ali.Email.AccountName
request := &dm20151123.SingleSendMailRequest{
AccountName: tea.String(accountName),
AddressType: tea.Int32(1),
ReplyToAddress: tea.Bool(false),
ToAddress: tea.String(email),
Subject: tea.String("验证码"),
HtmlBody: tea.String(getCodeHtmlBody(code)),
}
client.SingleSendMailWithOptions(request, &util.RuntimeOptions{})
}
func getCodeHtmlBody(code string) string {
return fmt.Sprintf(`
<div style="font-family: Arial, sans-serif; font-size: 14px; color: #333;">
<p>您的验证码是:%s</p>
<p>请在 10 分钟内使用此验证码完成操作。</p>
<p>如果这不是您的操作,请忽略此邮件。</p>
</div>
`, code)
}