alarm_msg.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package services
  2. import (
  3. "github.com/blinkbean/dingtalk"
  4. "gopkg.in/gomail.v2"
  5. "hongze/hongze_robot/utils"
  6. "strings"
  7. "time"
  8. )
  9. //projectName-项目名称
  10. //runMode-运行模式
  11. //msgBody-消息内容
  12. //level:消息基本,1:提示消息,2:警告消息,3:严重错误信息,默认为1 提示消息
  13. //钉钉机器人
  14. func SendAlarmMsgByDingTalk(projectName, runMode, msgBody string, level int) {
  15. if level <= 0 {
  16. level = 1
  17. }
  18. time.Sleep(time.Second)
  19. var err error
  20. defer func() {
  21. if err != nil {
  22. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "SendSms Err:"+err.Error(), utils.EmailSendToUsers)
  23. }
  24. }()
  25. var dingToken = []string{}
  26. dingToken = []string{
  27. "c0ff5de65a46c8a340c9846dcae6f182782247dbd910f4fcfa0758e12c28a030",
  28. "84780b28c4cd6f2ca3edd650e068cd56a4ab99fc78003bdd0983c35b573b3e75",
  29. "dbdb7f0650e920740c952bfc29d9217d8dbbfc3d949dc8bd25ad8ed744ca1b40",
  30. }
  31. smsDateTime := time.Now().Format(utils.FormatDateTime)
  32. var fontColor string
  33. if level == 1 {
  34. fontColor = `#008000`
  35. } else if level == 2 {
  36. fontColor = `#FF8C00`
  37. } else {
  38. fontColor = `#FF0000`
  39. }
  40. title := projectName + "【" + runMode + "】"
  41. if runMode == "" {
  42. title = projectName
  43. }
  44. msg := []string{
  45. "### " + title,
  46. "---",
  47. "- <font color=" + fontColor + ">" + msgBody + "</font>",
  48. "- " + smsDateTime,
  49. }
  50. cli := dingtalk.InitDingTalk(dingToken, "报警")
  51. //cli.SendTextMessage("content", dingtalk.WithAtAll())
  52. err = cli.SendMarkDownMessageBySlice("华瑞信息", msg)
  53. if err != nil {
  54. return
  55. }
  56. }
  57. var (
  58. emails = []struct {
  59. address string
  60. authCode string
  61. }{
  62. {
  63. address: "qunao007@qq.com",
  64. authCode: "cyhjgffhaobteihd",
  65. },
  66. {
  67. address: "2370889154@qq.com",
  68. authCode: "pfujkfwyqaprdjgb",
  69. },
  70. }
  71. )
  72. //邮件
  73. func SendAlarmMsgByEmail(projectName, runMode, msgBody, touser string, level int) bool {
  74. var arr []string
  75. sub := strings.Index(touser, ";")
  76. if sub >= 0 {
  77. spArr := strings.Split(touser, ";")
  78. for _, v := range spArr {
  79. arr = append(arr, v)
  80. }
  81. } else {
  82. arr = append(arr, touser)
  83. }
  84. rand := utils.GetRandInt(1, len(emails)+1)
  85. emailObj := emails[rand-1]
  86. emailAddress := emailObj.address
  87. emailAuthCode := emailObj.authCode
  88. var fontColor string
  89. if level == 1 {
  90. fontColor = `#008000`
  91. } else if level == 2 {
  92. fontColor = `#FF8C00`
  93. } else {
  94. fontColor = `#FF0000`
  95. }
  96. body := `<!DOCTYPE html>
  97. <html lang="en">
  98. <head>
  99. <meta charset="UTF-8">
  100. <title>Title</title>
  101. </head>
  102. <body>
  103. <div style="color: ` + fontColor + `">
  104. ` + msgBody + `
  105. </div>
  106. </body>
  107. </html>`
  108. title := projectName + "【" + runMode + "】"
  109. m := gomail.NewMessage()
  110. m.SetHeader("From", emailAddress)
  111. m.SetHeader("To", arr...)
  112. m.SetHeader("Subject", title+" "+utils.GetRandStringNoSpecialChar(10))
  113. m.SetBody("text/html", body)
  114. d := gomail.NewDialer("smtp.qq.com", 587, emailAddress, emailAuthCode)
  115. if err := d.DialAndSend(m); err != nil {
  116. return false
  117. }
  118. return true
  119. }