airflow.providers.imap.hooks.imap

此模块提供了搜索具有特定附件的邮件并下载所需的一切功能。

它使用了已集成在 Python 3 中的 imaplib 库。

ImapHook

此 Hook 使用 IMAP 协议连接到邮件服务器。

Mail

此类简化了处理 imaplib 客户端返回的邮件。

MailPart

此类是 Mail 对象部分的包装器,为其提供了更多功能。

模块内容

class airflow.providers.imap.hooks.imap.ImapHook(imap_conn_id=default_conn_name)[source]

基类: airflow.hooks.base.BaseHook

此 Hook 使用 IMAP 协议连接到邮件服务器。

注意

请使用 with 将此 Hook 作为上下文管理器调用,以自动打开和关闭与邮件服务器的连接。

参数:

imap_conn_id (str) – 包含用于客户端认证信息的 IMAP 连接 ID

conn_name_attr = 'imap_conn_id'[source]
default_conn_name = 'imap_default'[source]
conn_type = 'imap'[source]
hook_name = 'IMAP'[source]
imap_conn_id = 'imap_default'[source]
mail_client: imaplib.IMAP4_SSL | imaplib.IMAP4 | None = None[source]
__enter__()[source]
__exit__(exc_type, exc_val, exc_tb)[source]
get_conn()[source]

登录到邮件服务器。

注意

请使用 with 将此 Hook 作为上下文管理器调用,以自动打开和关闭与邮件服务器的连接。

返回:

一个已授权的 ImapHook 对象。

返回类型:

ImapHook

has_mail_attachment(name, *, check_regex=False, mail_folder='INBOX', mail_filter='All')[source]

检查邮件文件夹中是否包含带有给定名称的附件的邮件。

参数:
  • name (str) – 要搜索的附件名称。

  • check_regex (bool) – 检查名称是否为正则表达式。

  • mail_folder (str) – 要查看的邮件文件夹。

  • mail_filter (str) – 如果设置为 'All' 之外的值,则只检查特定的邮件。详情请参阅 imaplib.IMAP4.search()

返回:

如果存在具有给定名称的附件,则为 True;否则为 False。

返回类型:

bool

retrieve_mail_attachments(name, *, check_regex=False, latest_only=False, mail_folder='INBOX', mail_filter='All', not_found_mode='raise')[source]

根据附件名称在邮件文件夹中检索邮件附件。

参数:
  • name (str) – 将要下载的附件名称。

  • check_regex (bool) – 检查名称是否为正则表达式。

  • latest_only (bool) – 如果设置为 True,则只检索第一个匹配的附件。

  • mail_folder (str) – 要查看的邮件文件夹。

  • mail_filter (str) – 如果设置为 'All' 之外的值,则只检查特定的邮件。详情请参阅 imaplib.IMAP4.search()

  • not_found_mode (str) – 指定未找到附件时应执行的操作。支持的值为 'raise'(引发异常)、'warn'(仅打印警告)和 'ignore'(不进行任何通知)。

返回:

一个元组列表,每个元组包含附件文件名及其内容。

返回类型:

list[tuple]

download_mail_attachments(name, local_output_directory, *, check_regex=False, latest_only=False, mail_folder='INBOX', mail_filter='All', not_found_mode='raise')[source]

根据附件名称将邮件文件夹中的邮件附件下载到本地目录。

参数:
  • name (str) – 将要下载的附件名称。

  • local_output_directory (str) – 文件将下载到的本地机器上的输出目录。

  • check_regex (bool) – 检查名称是否为正则表达式。

  • latest_only (bool) – 如果设置为 True,则只下载第一个匹配的附件。

  • mail_folder (str) – 要查看的邮件文件夹。

  • mail_filter (str) – 如果设置为 'All' 之外的值,则只检查特定的邮件。详情请参阅 imaplib.IMAP4.search()

  • not_found_mode (str) – 指定未找到附件时应执行的操作。支持的值为 'raise'(引发异常)、'warn'(仅打印警告)和 'ignore'(不进行任何通知)。

class airflow.providers.imap.hooks.imap.Mail(mail_body)[source]

基类: airflow.utils.log.logging_mixin.LoggingMixin

此类简化了处理 imaplib 客户端返回的邮件。

参数:

mail_body (str) – 从 imaplib 客户端接收到的邮件正文。

mail[source]
has_attachments()[source]

检查邮件是否有附件。

返回:

如果有附件,则为 True;否则为 False。

返回类型:

bool

get_attachments_by_name(name, check_regex, find_first=False)[source]

按名称获取邮件的所有附件。

参数:
  • name (str) – 要查找的附件名称。

  • check_regex (bool) – 检查名称是否为正则表达式。

  • find_first (bool) – 如果设置为 True,则只查找第一个匹配项然后停止。

返回:

一个元组列表,每个元组包含名称和内容,其中附件名称与给定名称匹配。

返回类型:

list[tuple[Any, Any]]

class airflow.providers.imap.hooks.imap.MailPart(part)[source]

此类是 Mail 对象部分的包装器,为其提供了更多功能。

参数:

part (Any) – Mail 对象中的邮件部分。

part[source]
is_attachment()[source]

检查该部分是否为有效的邮件附件。

返回:

如果是附件,则为 True;否则为 False。

返回类型:

bool

has_matching_name(name)[source]

检查给定名称是否与部分的名称匹配。

参数:

name (str) – 要查找的名称。

返回:

如果与名称匹配(包括正则表达式),则为 True。

返回类型:

tuple[Any, Any] | None

has_equal_name(name)[source]

检查给定名称是否与部分的名称相等。

参数:

name (str) – 要查找的名称。

返回:

如果与给定名称相等,则为 True。

返回类型:

bool

get_file()[source]

获取文件,包括名称和内容。

返回:

部分的名称和内容。

返回类型:

tuple

此条目有帮助吗?