email.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package utils
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/http"
  6. "gopkg.in/gomail.v2"
  7. "mime"
  8. "strings"
  9. )
  10. var (
  11. AlarmMsgUrl = "http://127.0.0.1:8606/api/alarm/send"
  12. )
  13. //发送邮件
  14. func SendEmail(title, content string, touser string) bool {
  15. if RunMode == "debug" {
  16. return false
  17. }
  18. var arr []string
  19. sub := strings.Index(touser, ";")
  20. if sub >= 0 {
  21. spArr := strings.Split(touser, ";")
  22. for _, v := range spArr {
  23. arr = append(arr, v)
  24. }
  25. } else {
  26. arr = append(arr, touser)
  27. }
  28. m := gomail.NewMessage()
  29. m.SetHeader("From", "317699326@qq.com ")
  30. m.SetHeader("To", arr...)
  31. m.SetHeader("Subject", title+" "+GetRandString(16))
  32. m.SetBody("text/html", content)
  33. d := gomail.NewDialer("smtp.qq.com", 587, "317699326@qq.com", "oqdypwfcvruwcbea")
  34. if err := d.DialAndSend(m); err != nil {
  35. return false
  36. }
  37. go SendAlarmMsg(content, 1)
  38. return true
  39. }
  40. //projectName-项目名称
  41. //runMode-运行模式
  42. //msgBody-消息内容
  43. //level:消息基本,1:提示消息,2:警告消息,3:严重错误信息,默认为1 提示消息
  44. func SendAlarmMsg(msgBody string, level int) {
  45. params := make(map[string]interface{})
  46. params["ProjectName"] = APPNAME
  47. params["RunMode"] = RunMode
  48. params["MsgBody"] = msgBody
  49. params["Level"] = level
  50. param, err := json.Marshal(params)
  51. if err != nil {
  52. FileLog.Info("SendAlarmMsg json.Marshal Err:" + err.Error())
  53. return
  54. }
  55. http.Post(AlarmMsgUrl, string(param))
  56. }
  57. //发送邮件
  58. func SendEmailByHz(title, content string, touser string) (result bool, err error) {
  59. //if RunMode == "debug" {
  60. // result = false
  61. // return result, err
  62. //}
  63. var arr []string
  64. sub := strings.Index(touser, ";")
  65. if sub >= 0 {
  66. spArr := strings.Split(touser, ";")
  67. for _, v := range spArr {
  68. arr = append(arr, v)
  69. }
  70. } else {
  71. arr = append(arr, touser)
  72. }
  73. m := gomail.NewMessage()
  74. m.SetHeader("From", "public@hzinsights.com")
  75. m.SetHeader("To", arr...)
  76. m.SetHeader("Subject", title)
  77. m.SetBody("text/html", content)
  78. d := gomail.NewDialer("smtp.mxhichina.com", 465, "public@hzinsights.com", "Hzinsights2018")
  79. if err := d.DialAndSend(m); err != nil {
  80. result = false
  81. return result, err
  82. }
  83. result = true
  84. return
  85. }
  86. //发送带有文件的邮件
  87. func SendEmailHaveFile(title, content string, fileName, touser string) bool {
  88. var arr []string
  89. sub := strings.Index(touser, ";")
  90. if sub >= 0 {
  91. spArr := strings.Split(touser, ";")
  92. for _, v := range spArr {
  93. arr = append(arr, v)
  94. }
  95. } else {
  96. arr = append(arr, touser)
  97. }
  98. m := gomail.NewMessage()
  99. m.SetHeader("From", "317699326@qq.com ")
  100. m.SetHeader("To", arr...)
  101. m.SetHeader("Subject", title)
  102. m.Attach(fileName)
  103. m.SetBody("text/html", content)
  104. d := gomail.NewDialer("smtp.qq.com", 587, "317699326@qq.com", "oqdypwfcvruwcbea")
  105. if err := d.DialAndSend(m); err != nil {
  106. return false
  107. }
  108. return true
  109. }
  110. //发送邮件
  111. func SendEmailByHongze(title, content string, touser, attachPath, attachName string) bool {
  112. var arr []string
  113. sub := strings.Index(touser, ";")
  114. if sub >= 0 {
  115. spArr := strings.Split(touser, ";")
  116. for _, v := range spArr {
  117. arr = append(arr, v)
  118. }
  119. } else {
  120. arr = append(arr, touser)
  121. }
  122. m := gomail.NewMessage()
  123. m.SetHeader("From", "public@hzinsights.com")
  124. m.SetHeader("To", arr...)
  125. m.SetHeader("Subject", title)
  126. m.SetBody("text/html", content)
  127. //body := new(bytes.Buffer)
  128. if attachPath != "" {
  129. m.Attach(attachPath,
  130. gomail.Rename(attachName),
  131. gomail.SetHeader(map[string][]string{
  132. "Content-Disposition": []string{
  133. fmt.Sprintf(`attachment; filename="%s"`, mime.QEncoding.Encode("UTF-8", attachName)),
  134. },
  135. }))
  136. }
  137. d := gomail.NewDialer("smtp.mxhichina.com", 465, "public@hzinsights.com", "Hzinsights2018")
  138. if err := d.DialAndSend(m); err != nil {
  139. fmt.Println("send err:", err.Error())
  140. return false
  141. }
  142. return true
  143. }