|
@@ -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)
|