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 另一个专门针对该问题的问题。
希望对您有所帮助!
使用 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 另一个专门针对该问题的问题。
希望对您有所帮助!