印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

85 lines
2.7 KiB

package values
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"server/config"
"server/util"
"strconv"
"time"
"github.com/liangdas/mqant/log"
)
// =====================================不卡email
type BukaEmailCodeReq struct {
AppID string `json:"appId"` // appId
FromEmailAddress string `json:"fromEmailAddress"` // 发送的源邮箱
ToAddress string `json:"toAddress"` // 发送的目标邮箱
TemplateID string `json:"templateID"` // 模板id
TemplateData string `json:"templateData"` // 模板数据
Language string `json:"language"` // 语言
}
type BukaEmailCodeResp struct {
Status string `json:"status"` // 0成功
Reason string `json:"reason"` // 失败原因
Success string `json:"success"` // 成功数
Fail string `json:"fail"` // 失败数
EmailState string `json:"emailState"` // 提交状态:失败、成功
Remark string `json:"remark"` // 成功/失败描述
EmailId string `json:"emailId"` // 提交邮件到平台emailId
ToAddress string `json:"toAddress"` // 提交收件人地址(邮箱地址)
}
func BukaMailRequest(toAddr, code, lan string) error {
req := BukaEmailCodeReq{
AppID: config.GetConfig().Web.Mail.BukaEmailAppID,
FromEmailAddress: config.GetConfig().Web.Mail.BukaEmailAddr,
ToAddress: toAddr,
TemplateID: config.GetConfig().Web.Mail.BukaTemplateID,
Language: lan,
}
tmp := map[string]interface{}{"code": code}
templateData, _ := json.Marshal(tmp)
req.TemplateData = string(templateData)
url := config.GetConfig().Web.Mail.BukaEmailUrl
reqStr, _ := json.Marshal(req)
log.Debug("Post to:%v,req:%v", url, string(reqStr))
request, err := http.NewRequest("POST", url, bytes.NewBuffer(reqStr))
if err != nil {
log.Error("err:%v", err)
return err
}
now := strconv.FormatInt(time.Now().Unix(), 10)
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
request.Header.Set("Api-Key", config.GetConfig().Web.Mail.BukaAPIKey)
request.Header.Set("Timestamp", now)
request.Header.Set("Sign", util.CalculateMD5(config.GetConfig().Web.Mail.BukaAPIKey+config.GetConfig().Web.Mail.BukaAPISecret+now))
client := &http.Client{
Timeout: 5 * time.Second,
}
log.Debug("request:%+v", request)
resp, err := client.Do(request)
if err != nil {
log.Error("http post call err:%v", err)
return err
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
log.Debug("response Body%v:", string(body))
ret := BukaEmailCodeResp{}
if err := json.Unmarshal(body, &ret); err != nil {
log.Error("unmarshal fail err:%v", err)
return err
}
if ret.Status != "0" {
return fmt.Errorf("%v", ret.Reason)
}
return nil
}