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 }