Skip to content

阿里云邮件服务 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)
}