浏览代码

获取规则逻辑优化

xiziwen 4 月之前
父节点
当前提交
af6d3159a4
共有 1 个文件被更改,包括 17 次插入16 次删除
  1. 17 16
      utils/mail/imap.go

+ 17 - 16
utils/mail/imap.go

@@ -152,6 +152,19 @@ func ListenMail(mailAddress, folder, userName, password string, readBatchSize, f
 		}
 		// 获取邮件内容 End
 
+		// 获取规则
+		ruleJson, err := eta.GetBusinessConfByKey("MailCheckRule")
+		if err != nil {
+			global.FILE_LOG.Error("获取规则配置失败:%v", err)
+			return
+		}
+		var ruleList []report.MailRule
+		err = json.Unmarshal([]byte(ruleJson.ConfVal), &ruleList)
+		if err != nil {
+			global.FILE_LOG.Error("解析规则配置失败:%v", err)
+			return
+		}
+
 		//log.Println("开始读取邮件内容")
 		for msg := range messages {
 			// 如果需要终止,那么就不处理了
@@ -159,7 +172,7 @@ func ListenMail(mailAddress, folder, userName, password string, readBatchSize, f
 				continue
 			}
 
-			emailMessage, isRead, tmpErr := readEveryMsg(msg)
+			emailMessage, isRead, tmpErr := readEveryMsg(ruleList, msg)
 			if tmpErr != nil {
 				// 移除本地文件
 				{
@@ -203,7 +216,7 @@ func ListenMail(mailAddress, folder, userName, password string, readBatchSize, f
 }
 
 // document link: https://github.com/emersion/go-imap/wiki/Fetching-messages
-func readEveryMsg(msg *imap.Message) (emailMessage MailMessage, ok bool, err error) {
+func readEveryMsg(ruleList []report.MailRule, msg *imap.Message) (emailMessage MailMessage, ok bool, err error) {
 	ok = true
 	defer func() {
 		if err != nil {
@@ -280,7 +293,7 @@ func readEveryMsg(msg *imap.Message) (emailMessage MailMessage, ok bool, err err
 	}
 	emailMessage.Title = subject
 
-	if !RuleCheck(emailMessage) {
+	if !RuleCheck(ruleList, emailMessage) {
 		ok = false
 		return
 	}
@@ -453,19 +466,7 @@ func isIgnore(emailMessage MailMessage) bool {
 	return false
 }
 
-func RuleCheck(emailMessage MailMessage) bool {
-	ruleJson, err := eta.GetBusinessConfByKey("MailCheckRule")
-	if err != nil {
-		global.FILE_LOG.Error("获取规则配置失败:%v", err)
-		return false
-	}
-	var ruleList []report.MailRule
-	err = json.Unmarshal([]byte(ruleJson.ConfVal), &ruleList)
-	if err != nil {
-		global.FILE_LOG.Error("解析规则配置失败:%v", err)
-		return false
-	}
-
+func RuleCheck(ruleList []report.MailRule, emailMessage MailMessage) bool {
 	for _, v := range ruleList {
 		title := strings.ToLower(emailMessage.Title)
 		rule := strings.ToLower(v.Rule)