12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package notice
-
- import (
- "bytes"
- "encoding/json"
- "errors"
- "io/ioutil"
- "net/http"
- "net/smtp"
- "net/url"
- "strings"
- )
-
- func SendEmailBySMTP(user, host, port, pass, subject, email, content string, html bool) error {
- auth := smtp.PlainAuth("", user, pass, host)
-
- contentType := "Content-Type:text/plain;charset=UTF-8"
- if html {
- contentType = "Content-Type:text/html;charset=UTF-8"
- }
-
- msg := []byte("To: " + email + "\r\nFrom: " + user + ">\r\nSubject: " + subject + "\r\n" + contentType + "\r\n\r\n" + content)
-
- to := strings.Split(email, ";")
-
- return smtp.SendMail(strings.Join([]string{host, port}, ":"), auth, user, to, msg)
- }
-
- func SendEmailBySendCloud(uri, apiUser, apiKey, from, fromName, subject, email, content string, html bool) error {
- params := url.Values{
- "apiUser": strings.Split(apiUser, ";"),
- "apiKey": strings.Split(apiKey, ";"),
- "from": strings.Split(from, ";"),
- "fromName": strings.Split(fromName, ";"),
- "to": strings.Split(email, ";"), //to此时为地址列表
- "subject": []string{subject},
- }
-
- if html {
- params["html"] = []string{content}
- } else {
- params["plain"] = []string{content}
- }
-
- postBody := bytes.NewBufferString(params.Encode())
- respHandle, err := http.Post(uri, "application/x-www-form-urlencoded", postBody)
- if err != nil {
- return err
- }
- defer respHandle.Body.Close()
-
- bodyByte, err := ioutil.ReadAll(respHandle.Body)
- if err != nil {
- return err
- }
-
- // 返回数据格式
- //{
- // "result": true,
- // "statusCode": 200,
- // "message": "请求成功",
- // "info": {
- // "emailIdList": ["1530103894330_100557_12907_2084.sc-10_9_63_161-inbound0$15135172753@163.com"]
- // }
- //}
- resp := &struct {
- Result bool `json:"result"`
- StatusCode int `json:"statusCode"`
- Message string `json:"message"`
- Info struct {
- EmailIdList []string `json:"emailIdList"`
- } `json:"info"`
- }{}
-
- if err := json.Unmarshal(bodyByte, resp); err != nil {
- return err
- }
-
- if resp.Result == true && resp.StatusCode == http.StatusOK {
- return nil
- } else {
- return errors.New(" email send failed.")
- }
- }
|