Airflow寄信附檔2:信件內容設定與附檔

許博淳
數據共筆
Published in
Jul 13, 2022

前情提要

Airflow寄信附檔:儲存 Bigquery執行結果為 csv檔

不囉嗦,直接上 Code

# 定義 email相關的設內容
# 附件是我們在前情提要中已經下載而來的檔案
...
receiver = {
"宜蘭縣":YILAN_RECEIVER,
"高雄市":KAOSHUNG_RECEIVER,
"新北市":NEW_TAPEI_RECEIVER,
"花蓮縣":HUALIEN_RECEIVER
}
EMAIL_SETTING_LIST = {
"RECEIVER":receiver,
"SUBJECT":f"{date}均一教育平台{city}使用者紀錄周報",
"CONTENT":f"老師/課督您好:\n\n附件為{date}{city}使用數據\n\n謝謝!",
"ATTACHMENTS":[
f'/opt/airflow/dags/附件一名稱.csv',
f'/opt/airflow/dags/附件二名稱.csv'
]
}
from airflow.operators.email import EmailOperator
send_email_for_each_city = EmailOperator(
task_id=f'send_email_to_{city}_{date}',
to = EMAIL["RECEIVER"],
subject = EMAIL["SUBJECT"],
html_content = EMAIL["CONTENT"],
files = EMAIL["ATTACHMENTS"]
)

這邊使用多層的 dictionary,因此可以同時有多個附件,但要注意不同 email平台對於附件檔案大小會有不同限制。

Airflow中已經有好用的 operator可以寄信,我就沒有自己寫底層。

這個 operator也是現行(2022年6月)我認為少數比 pythonoperator好用的,省去設定 smtp和 server的時間。

--

--