电子邮件配置

您可以通过在 [email] 部分中设置 subject_template 和/或 html_content_template 来配置在 airflow.cfg 中发送的电子邮件。

[email]
email_backend = airflow.utils.email.send_email_smtp
subject_template = /path/to/my_subject_template_file
html_content_template = /path/to/my_html_content_template_file

等效的环境变量如下所示

AIRFLOW__EMAIL__EMAIL_BACKEND=airflow.utils.email.send_email_smtp
AIRFLOW__EMAIL__SUBJECT_TEMPLATE=/path/to/my_subject_template_file
AIRFLOW__EMAIL__HTML_CONTENT_TEMPLATE=/path/to/my_html_content_template_file

您可以通过在 [email] 部分中设置 from_email 来配置发件人的电子邮件地址,如下所示

[email]
from_email = "John Doe <[email protected]>"

等效的环境变量如下所示

AIRFLOW__EMAIL__FROM_EMAIL="John Doe <[email protected]>"

要配置 SMTP 设置,请查看标准配置中的 SMTP 部分。如果您不想将 SMTP 凭据存储在配置或环境变量中,您可以创建一个名为 smtp_defaultEmail 类型的连接,或选择一个自定义连接名称并在配置中设置 email_conn_id 及其名称,并将 SMTP 用户名密码存储在其中。其他 SMTP 设置(如主机、端口等)始终仅从配置中获取。连接可以是任何类型(例如“HTTP 连接”)。

如果您想检查当前设置了哪个电子邮件后端,可以使用 airflow config get-value email email_backend 命令,如下例所示。

$ airflow config get-value email email_backend
airflow.utils.email.send_email_smtp

要访问任务的信息,您可以在模板文件中使用 Jinja 模板

例如,html_content_template 文件可能如下所示

Try {{try_number}} out of {{max_tries + 1}}<br>
Exception:<br>{{exception_html}}<br>
Log: <a href="{{ti.log_url}}">Link</a><br>
Host: {{ti.hostname}}<br>
Mark success: <a href="{{ti.mark_success_url}}">Link</a><br>

注意

有关设置配置的更多信息,请参阅 设置配置选项

使用 SendGrid 发送电子邮件

使用默认 SMTP

您可以使用默认的 airflow SMTP 后端通过 SendGrid 发送电子邮件

[smtp]
smtp_host=smtp.sendgrid.net
smtp_starttls=False
smtp_ssl=False
smtp_user=apikey
smtp_password=<generated-api-key>
smtp_port=587
smtp_mail_from=<your-from-email>

等效的环境变量如下所示

AIRFLOW__SMTP__SMTP_HOST=smtp.sendgrid.net
AIRFLOW__SMTP__SMTP_STARTTLS=False
AIRFLOW__SMTP__SMTP_SSL=False
AIRFLOW__SMTP__SMTP_USER=apikey
AIRFLOW__SMTP__SMTP_PASSWORD=<generated-api-key>
AIRFLOW__SMTP__SMTP_PORT=587
AIRFLOW__SMTP__SMTP_MAIL_FROM=<your-from-email>

使用 SendGrid 提供程序

可以将 Airflow 配置为使用 SendGrid 发送电子邮件。

请按照以下步骤启用它

  1. 设置您的 SendGrid 帐户、SMTP 并复制用户名和 API 密钥。

  2. sendgrid 提供程序包含在您的 Airflow 安装中,例如:

pip install 'apache-airflow[sendgrid]' --constraint ...
pip install 'apache-airflow-providers-sendgrid' --constraint ...
  1. 更新 airflow.cfg[email] 部分中的 email_backend 属性,即

    [email]
    email_backend = airflow.providers.sendgrid.utils.emailer.send_email
    email_conn_id = sendgrid_default
    from_email = "[email protected]"
    

    等效的环境变量如下所示

    AIRFLOW__EMAIL__EMAIL_BACKEND=airflow.providers.sendgrid.utils.emailer.send_email
    AIRFLOW__EMAIL__EMAIL_CONN_ID=sendgrid_default
    SENDGRID_MAIL_FROM=hello@thelearning.dev
    
  2. 创建一个名为 sendgrid_default 的连接,或选择一个自定义连接名称并将其设置在“电子邮件”类型的 email_conn_id 中。连接中仅使用登录名和密码。

create email connection

注意

成功、失败和重试的回调将使用相同的配置发送电子邮件

使用 AWS SES 发送电子邮件

可以将 Airflow 配置为使用 AWS SES 发送电子邮件。

请按照以下步骤启用它

  1. amazon 子包包含在您的 Airflow 安装中

pip install 'apache-airflow[amazon]'
  1. 更新 airflow.cfg[email] 部分中的 email_backend 属性

    [email]
    email_backend = airflow.providers.amazon.aws.utils.emailer.send_email
    email_conn_id = aws_default
    from_email = From email <[email protected]>
    

请注意,对于 SES,您必须将 from_email 配置为可以从 SES 发送消息的有效电子邮件地址。

  1. 创建一个名为 aws_default 的连接,或选择一个自定义连接名称并将其设置在 email_conn_id 中。连接类型应为 Amazon Web Services

此条目是否有帮助?