package email import ( "context" "eta/eta_crawler/utils" "eta/eta_crawler/utils/mail" "fmt" "io/fs" "os" "strconv" "sync" ) // 同步用户锁,防止重复同步,不管是全量还是增量,都是同一时间只能一个同步 var lockListenEmail sync.Mutex func ListenMail(cont context.Context) (err error) { defer func() { lockListenEmail.Unlock() if err != nil { utils.FileLog.Error("监听邮件失败:%s", err.Error()) } }() lockListenEmail.Lock() // 目录创建 //_ = ensureDirExists(fmt.Sprintf("%s%s", utils.CoalFilePath, `file`)) _ = ensureDirExists(utils.CoalFilePath) fmt.Println("开始监听邮件") utils.FileLog.Info("中国煤炭网开始监听邮件") var lastNday int if utils.CoalEmailNDay != "" { lastNday, _ = strconv.Atoi(utils.CoalEmailNDay) if err != nil { lastNday = 1 } } if lastNday < 0 { lastNday = 1 } utils.FileLog.Info("中国煤炭监听配置为:CoalEmailAddress:%s, CoalEmailFolder:%s, lastNday:%d", utils.CoalEmailAddress, utils.CoalEmailFolder, lastNday) var readBatch int if utils.CoalEmailReadBatch != "" { readBatch, err = strconv.Atoi(utils.CoalEmailReadBatch) if err != nil { readBatch = 10 utils.FileLog.Warning("读取邮件 MtjhEmailReadBatch 配置失败:%s, 默认改为:%d", err.Error(), readBatch) } } mail.ListenMail(utils.CoalEmailAddress, utils.CoalEmailFolder, utils.CoalEmailUseName, utils.CoalEmailPassword, readBatch, lastNday) return } func ensureDirExists(dirPath string) error { info, err := os.Stat(dirPath) if err == nil { if info.IsDir() { return nil // 目录已存在 } return fmt.Errorf("path '%s' exists but is not a directory", dirPath) } if os.IsNotExist(err) { return os.MkdirAll(dirPath, fs.ModePerm) } return err }