python - 通过 Airflow 提取电子邮件内容
问题描述
有没有办法可以从电子邮件中提取以下信息:
- 主题
- 发件人
- 接收者
- 时间戳
根据抄送的电子邮件搜索电子邮件。电子邮件是gmail
.
我已经阅读了这篇文章,但这是为了下载附件。
我只需要上面的信息。然后存放在 BQ 中。我怎样才能做到这一点?
到目前为止,这就是我所做的:
from airflow.operators import IMAPAttachmentOperator
extract_email = IMAPAttachmentOperator(
imap_conn_id='my_email_conn',
mailbox='inbox',
search_criteria={"CC": "some_email@gmail.com"},
task_id='extract_email_content',
dag=dag)
解决方案
据我所知,没有现成的运营商,所以你需要建立自己的。好的一面是,Airflow 中似乎有足够的逻辑可以重用或用作指导。例如,IMapHook中的这里是获取电子邮件的逻辑,然后您可以在运算符中过滤它们。其他选项是使用search
,例如IMapHook().mail_client.search(...)
,参考搜索文档。
关于在 BQ 中存储信息 - 使用BigQueryHook.insert_rows构建您的自定义运算符以将所需信息保存到 BQ 。
您可以使用也可以使用GCSHook.upload将数据上传到 GCS,然后使用GCSToBigQueryOperator
推荐阅读
- visual-studio - f# xamarin 部署时空白 android 项目错误:无法解析参考:FSharp.Core
- git - 您可以向一组无法访问 repo / 添加到 jenkins 构建的用户打开 Jenkins 作业吗
- neo4j - 如何使用 CSV 中定义的关系将大型数据集导入 Neo4j
- python - str.contains pandas 返回 'str' 对象没有属性 'contains' 新使用 pandas
- javascript - 如何在不同子域之间共享本地存储?
- python - pip/python:普通站点包不可写
- docker - 如何使用来自 GitHub Packages 的 Docker 镜像?
- ios - RPScreenRecorder.shared().isAvailable 始终为 false
- javascript - Promise {
} on bcrypt - python - 对 pandas 数据框项的迭代