github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/third/kmgSubmail/kmgSubmail.go (about)

     1  package kmgSubmail
     2  
     3  import (
     4  	"github.com/bronze1man/kmg/encoding/kmgJson"
     5  	"github.com/bronze1man/kmg/errors"
     6  	"github.com/bronze1man/kmg/kmgLog"
     7  	"github.com/bronze1man/kmg/kmgStrconv"
     8  	"io/ioutil"
     9  	"net/http"
    10  	"net/url"
    11  )
    12  
    13  type Mail struct {
    14  	Project  SubmailProject
    15  	Links    string
    16  	To       string
    17  	Vars     string
    18  	Html     string
    19  	From     string
    20  	FromName string
    21  	Title    string
    22  }
    23  
    24  type Massege struct {
    25  	ProjectId string
    26  	To        string
    27  }
    28  
    29  type Submail struct {
    30  	Appid     string
    31  	Signature string
    32  }
    33  
    34  var EmailConfig = Submail{}
    35  
    36  type SubmailProject string
    37  
    38  func SendMailForHtml(email Mail) (err error) {
    39  	submailUrl := "https://api.submail.cn/mail/send.json"
    40  	return MailBreack(email, url.Values{
    41  		"appid":     {EmailConfig.Appid},
    42  		"signature": {EmailConfig.Signature},
    43  		"to":        {email.To},
    44  		"html":      {email.Html},
    45  		"subject":   {email.Title},
    46  		"from":      {email.From},
    47  		"from_name": {email.FromName},
    48  	}, submailUrl)
    49  }
    50  
    51  func SendMailForModel(email Mail) (err error) {
    52  	submailUrl := "https://api.submail.cn/mail/xsend.json"
    53  	return MailBreack(email, url.Values{
    54  		"appid":     {EmailConfig.Appid},
    55  		"signature": {EmailConfig.Signature},
    56  		"to":        {email.To},
    57  		"project":   {kmgStrconv.InterfaceToString(email.Project)},
    58  		"links":     {email.Links},
    59  		"vars":      {email.Vars},
    60  	}, submailUrl)
    61  }
    62  
    63  func MailBreack(email Mail, u url.Values, submailUrl string) (err error) {
    64  	resp, e := http.PostForm(submailUrl, u)
    65  	if e != nil {
    66  		return e
    67  	}
    68  	defer resp.Body.Close()
    69  	body, e := ioutil.ReadAll(resp.Body)
    70  	if e != nil {
    71  		return e
    72  	}
    73  	kmgLog.Log("Submail", string(body), email)
    74  	data := kmgJson.MustUnmarshalToMapDeleteBOM(body)
    75  	if data["status"] == "error" {
    76  		return errors.New(kmgStrconv.InterfaceToString(data["msg"]))
    77  	}
    78  	return nil
    79  }
    80  
    81  func MustXSendMail(email Mail) {
    82  	err := SendMailForModel(email)
    83  	if err != nil {
    84  		defer func() {
    85  			err := recover()
    86  			kmgLog.Log("error", err)
    87  		}()
    88  		panic(err)
    89  	}
    90  }
    91  
    92  func MustSendMail(email Mail) {
    93  	err := SendMailForHtml(email)
    94  	if err != nil {
    95  		defer func() {
    96  			err := recover()
    97  			kmgLog.Log("error", err)
    98  		}()
    99  		panic(err)
   100  	}
   101  }
   102  
   103  func SendMessage(massage Massege) (err error) {
   104  	massegeApiUrl := "https://api.submail.cn/message/xsend"
   105  	resp, e := http.PostForm(massegeApiUrl, url.Values{
   106  		//		"appid":     {EmailConfig.Appid},
   107  		//		"signature": {EmailConfig.Signature},
   108  		"appid":     {"10111"},
   109  		"signature": {"142a3e0d66c4dda1e918487b1952b26c"},
   110  		"to":        {massage.To},
   111  		"project":   {massage.ProjectId},
   112  	})
   113  	if e != nil {
   114  		return e
   115  	}
   116  	defer resp.Body.Close()
   117  	body, e := ioutil.ReadAll(resp.Body)
   118  	if e != nil {
   119  		return e
   120  	}
   121  	kmgLog.Log("Submail", string(body), massage)
   122  	data := kmgJson.MustUnmarshalToMapDeleteBOM(body)
   123  	if data["status"] == "error" {
   124  		return errors.New(kmgStrconv.InterfaceToString(data["msg"]))
   125  	}
   126  	return nil
   127  }
   128  
   129  func MustXsendMessage(massage Massege) {
   130  	err := SendMessage(massage)
   131  	if err != nil {
   132  		defer func() {
   133  			err := recover()
   134  			kmgLog.Log("error", err)
   135  		}()
   136  		panic(err)
   137  	}
   138  }