72 lines
2.4 KiB
Go
72 lines
2.4 KiB
Go
package api
|
||
|
||
import (
|
||
"fmt"
|
||
"gitea.party/public-messag-service/common/params"
|
||
"gitea.party/public-messag-service/common/public"
|
||
"gitea.party/public-messag-service/router/web"
|
||
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
|
||
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
|
||
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
func EmailXSend(c *gin.Context) {
|
||
result := web.NewResponse()
|
||
defer web.SendResponse(c, result)()
|
||
|
||
pm := params.EmailSend{}
|
||
err := c.ShouldBindJSON(&pm)
|
||
if err != nil {
|
||
result.SetErrCode(public.RespCodeErrorParam).AddError(err)
|
||
return
|
||
}
|
||
// 初始化客户端
|
||
credentialsProvider := credentials.NewStaticAKCredentialsProvider(pm.AccessKeyId, pm.AccessKeySecret)
|
||
client, err := sdk.NewClientWithOptions(
|
||
"cn-hangzhou", // 区域 ID,例如 cn-hangzhou
|
||
sdk.NewConfig(), // 请求配置
|
||
credentialsProvider, //
|
||
)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
// 创建请求
|
||
request := requests.NewCommonRequest()
|
||
request.Method = "POST"
|
||
request.Scheme = "https"
|
||
request.Domain = "dm.aliyuncs.com" // 邮件推送服务域名
|
||
request.Version = "2015-11-23" // API 版本
|
||
request.ApiName = "SingleSendMail" // 接口名称
|
||
|
||
// 设置请求参数
|
||
request.QueryParams["RegionId"] = "cn-hangzhou"
|
||
request.QueryParams["AccountName"] = "sender@your-domain.com" // 发件人地址(需验证)
|
||
request.QueryParams["AddressType"] = "1" // 0: 随机账号; 1: 发件人地址
|
||
request.QueryParams["ReplyToAddress"] = "true" // 是否允许回复
|
||
request.QueryParams["ToAddress"] = "recipient@example.com" // 收件人地址
|
||
request.QueryParams["Subject"] = "Test Email from Aliyun" // 邮件主题
|
||
request.QueryParams["HtmlBody"] = "<h1>Hello</h1><p>This is a test email .</p>" // HTML 邮件正文
|
||
// request.QueryParams["TextBody"] = "This is a test email." // 纯文本正文(可选,优先使用 HtmlBody)
|
||
|
||
// 发送请求
|
||
res, err := client.ProcessCommonRequest(request)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
// 输出响应
|
||
//fmt.Println(res.GetHttpContentString())
|
||
// 4. 处理响应
|
||
if res.IsSuccess() {
|
||
result.SetData(fmt.Sprintf("发送失败: %s", res.GetHttpContentString()))
|
||
return
|
||
} else {
|
||
result.SetErrMsg(
|
||
public.RespCodeErrorUnknown,
|
||
fmt.Sprintf("发送失败: %s", res.GetHttpContentString())).AddError()
|
||
return
|
||
}
|
||
}
|