Nifi Email ConsumeIMAP 按主题、从、到和日期过滤

Nifi Email ConsumeIMAP filter by subject, from , to and date

使用 ConsumeIMAP 从收件箱中读取电子邮件并尝试 select - 下载附件 - 已发送 "From" xyz@yahoo.com - 发送 "To" abc@gmail.com - 他们的主题有 "Daily" - 美国东部时间上午 8 点

如果可以在任何组件中设置,请告诉我。我尝试使用 EvaluateJsonPath、ExtractEmailHeaders 和 RouteonAttribute,但还没有成功。

听起来你一直在探索正确的道路。您应该能够使用包含以下内容的流程来实现此目的:

ConsumeIMAP >> ExtractEmailHeaders >> RouteOnAttribute

ConsumeIMAP 将从电子邮件服务器下载消息并为每条消息创建一个 FlowFile,将电子邮件原始字节存储在 FlowFile 内容中。

ExtractEmailHeaders attempts to parse a FlowFile's contents as email (must be RFC-2822 compliant), 提取电子邮件 headers, 并将每个 header 字段写入 FlowFile 属性, 包括:

  • email.headers.from.*
  • email.headers.to.*
  • email.headers.subject
  • email.headers.sent_date

请注意,ExtractEmailHeaders 没有进行任何过滤,只是根据 FlowFile 内容填充 FlowFile 属性,从而使 FlowFiles 更容易在流的下游路由。首先创建一个包含这两个处理器的流,并验证 ExtractEmailHeaders 处理器的输出是否满足这些预期。如果不是,则可能是电子邮件格式不正确或不符合 RFC-2822。

通过ExtractEmailHeaders成功发送电子邮件流文件后,您可以使用一个或多个RouteOnAttribute processors using the NiFi Expression Language进行过滤以定义您的匹配条件,例如:

${email.headers.subject.contains("Daily")}

如果您已通过 ExtractEmailHeaders 验证您的流程正常工作,但 RouteOnAttribute 中的过滤未按预期工作,请确保您的属性表达式和关于电子邮件的假设 header 值(例如,大写、日期时间格式)是正确的。请参阅 Apache NiFi Expression Language Guide,如果您有与表达式语言本身相关的具体问题,请在此处搜索或 post 另一个专门针对该问题的问题。

希望对您有所帮助!