udptaskmail.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "net/http"
  7. "sync"
  8. "time"
  9. )
  10. var udptaskmap = &sync.Map{}
  11. var tomail string
  12. var api string
  13. type udpNode struct {
  14. timestamp int64
  15. }
  16. func checkMailJob() {
  17. //阿里云内网无法发送邮件
  18. jkmail, _ := Config["jkmail"].(map[string]interface{})
  19. if jkmail != nil {
  20. tomail, _ = jkmail["to"].(string)
  21. api, _ = jkmail["api"].(string)
  22. }
  23. log.Println("start check mail Job", tomail, Config["jkmail"])
  24. for {
  25. udptaskmap.Range(func(k, v interface{}) bool {
  26. now := time.Now().Unix()
  27. node, _ := v.(*udpNode)
  28. if now-node.timestamp >= 600 {
  29. udptaskmap.Delete(k)
  30. res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", api, tomail, "extract_control-warning",k.(string)))
  31. if err == nil {
  32. defer res.Body.Close()
  33. read, err := ioutil.ReadAll(res.Body)
  34. log.Println("控制中心-邮件发送成功:", string(read), err)
  35. }else {
  36. log.Println("控制中心-邮件发送异常:", err)
  37. }
  38. }
  39. return true
  40. })
  41. time.Sleep(60 * time.Second)
  42. }
  43. }