mail.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package email
  2. import (
  3. "context"
  4. "eta/eta_crawler/utils"
  5. "eta/eta_crawler/utils/mail"
  6. "fmt"
  7. "io/fs"
  8. "os"
  9. "strconv"
  10. "sync"
  11. )
  12. // 同步用户锁,防止重复同步,不管是全量还是增量,都是同一时间只能一个同步
  13. var lockListenEmail sync.Mutex
  14. func ListenMail(cont context.Context) (err error) {
  15. defer func() {
  16. lockListenEmail.Unlock()
  17. if err != nil {
  18. utils.FileLog.Error("监听邮件失败:%s", err.Error())
  19. }
  20. }()
  21. lockListenEmail.Lock()
  22. // 目录创建
  23. //_ = ensureDirExists(fmt.Sprintf("%s%s", utils.CoalFilePath, `file`))
  24. _ = ensureDirExists(utils.CoalFilePath)
  25. fmt.Println("开始监听邮件")
  26. utils.FileLog.Info("中国煤炭网开始监听邮件")
  27. var lastNday int
  28. if utils.CoalEmailNDay != "" {
  29. lastNday, _ = strconv.Atoi(utils.CoalEmailNDay)
  30. if err != nil {
  31. lastNday = 1
  32. }
  33. }
  34. if lastNday < 0 {
  35. lastNday = 1
  36. }
  37. utils.FileLog.Info("中国煤炭监听配置为:CoalEmailAddress:%s, CoalEmailFolder:%s, lastNday:%d", utils.CoalEmailAddress, utils.CoalEmailFolder, lastNday)
  38. var readBatch int
  39. if utils.CoalEmailReadBatch != "" {
  40. readBatch, err = strconv.Atoi(utils.CoalEmailReadBatch)
  41. if err != nil {
  42. readBatch = 10
  43. utils.FileLog.Warning("读取邮件 MtjhEmailReadBatch 配置失败:%s, 默认改为:%d", err.Error(), readBatch)
  44. }
  45. }
  46. mail.ListenMail(utils.CoalEmailAddress, utils.CoalEmailFolder, utils.CoalEmailUseName, utils.CoalEmailPassword, readBatch, lastNday)
  47. return
  48. }
  49. func ensureDirExists(dirPath string) error {
  50. info, err := os.Stat(dirPath)
  51. if err == nil {
  52. if info.IsDir() {
  53. return nil // 目录已存在
  54. }
  55. return fmt.Errorf("path '%s' exists but is not a directory", dirPath)
  56. }
  57. if os.IsNotExist(err) {
  58. return os.MkdirAll(dirPath, fs.ModePerm)
  59. }
  60. return err
  61. }