12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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
- }
|