Airflow 峰會 2025 將於 10 月 07-09 日舉行。立即註冊獲取早鳥票!

電子郵件配置

您可以透過在 airflow.cfg 檔案的 [email] 部分設定 subject_template 和/或 html_content_template 來配置傳送的電子郵件。

[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 <johndoe@example.com>"

等效環境變數如下所示:

AIRFLOW__EMAIL__FROM_EMAIL="John Doe <johndoe@example.com>"

要配置 SMTP 設定,請檢視標準配置中的 SMTP 部分。如果您不想將 SMTP 憑據儲存在配置檔案或環境變數中,可以建立一個名為 smtp_defaultEmail 型別連線,或者選擇一個自定義連線名稱並在配置中將 email_conn_id 設定為其名稱,並將 SMTP 使用者名稱和密碼儲存在其中。其他 SMTP 設定,如主機、埠等,始終只從配置中獲取。連線可以是任何型別(例如 'HTTP connection')。

如果您想檢查當前設定的電子郵件後端,可以使用 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_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_PORT=587
AIRFLOW__SMTP__SMTP_MAIL_FROM=<your-from-email>

使用 SendGrid Provider

Airflow 可以配置為使用 SendGrid 傳送電子郵件。

按照以下步驟啟用它:

  1. 設定您的 SendGrid 賬戶,獲取 SMTP 使用者名稱和 API 金鑰。

  2. 在安裝 Airflow 時包含 sendgrid provider,例如,

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 = "hello@eg.com"
    

    等效環境變數如下所示:

    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,型別為 'Email'。連線中只使用登入名和密碼。

create email connection

注意

成功、失敗和重試的回撥將使用相同的配置傳送電子郵件

使用 AWS SES 傳送電子郵件

Airflow 可以配置為使用 AWS SES 傳送電子郵件。

按照以下步驟啟用它:

  1. 在安裝 Airflow 時包含 amazon 子包

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@example.com>
    

請注意,對於 SES,您必須將 from_email 配置為可以從 SES 傳送訊息的有效電子郵件地址。

  1. 建立名為 aws_default 的連線,或者選擇一個自定義連線名稱並將其設定為 email_conn_id。連線型別應為 Amazon Web Services

此條目有幫助嗎?