base.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package match
  2. import (
  3. "encoding/json"
  4. "github.com/Jinnrry/pmail/dto/parsemail"
  5. "github.com/Jinnrry/pmail/utils/context"
  6. )
  7. const (
  8. RuleTypeRegex = "regex"
  9. RuleTypeContains = "contains"
  10. RuleTypeEq = "equal"
  11. )
  12. type Match interface {
  13. Match(ctx *context.Context, email *parsemail.Email) bool
  14. }
  15. func getFieldContent(field string, email *parsemail.Email) string {
  16. switch field {
  17. case "ReplyTo":
  18. b, _ := json.Marshal(email.ReplyTo)
  19. return string(b)
  20. case "From":
  21. b, _ := json.Marshal(email.From)
  22. return string(b)
  23. case "Subject":
  24. return email.Subject
  25. case "To":
  26. b, _ := json.Marshal(email.To)
  27. return string(b)
  28. case "Bcc":
  29. b, _ := json.Marshal(email.Bcc)
  30. return string(b)
  31. case "Cc":
  32. b, _ := json.Marshal(email.Cc)
  33. return string(b)
  34. case "Text":
  35. return string(email.Text)
  36. case "Html":
  37. return string(email.HTML)
  38. case "Sender":
  39. b, _ := json.Marshal(email.Sender)
  40. return string(b)
  41. case "Content":
  42. b := string(email.HTML)
  43. b2 := string(email.Text)
  44. return b + b2
  45. }
  46. return ""
  47. }