email - 服务器不支持 Airflow SMTP AUTH 扩展
问题描述
使用具有以下airflow.cfg
配置的 Airflow 2.0.1。我正在尝试发送电子邮件通知。我的 gmail 帐户 2 因素身份验证已激活。
smtp_host = smtp.gmail.com
smtp_starttls = False
smtp_ssl = False
smtp_user = <my_gmail_user@gmail.com>
smtp_password = <my_password>
smtp_port = 587
smtp_mail_from = <my_gmail_user@gmail.com>
smtp_timeout = 30
smtp_retry_limit = 5
我的电子邮件任务
send_email_notification = EmailOperator(
task_id='send_email_notification',
to='<my_another_working_email>@hotmail.com',
subject='Airflow mail test',
html_content="<h3> Airflow mail test</h2>"
)
但我收到以下错误。在气流安装期间,我指定admin@vbo.local
为管理员用户邮件,但实际上并不存在。我不确定这是错误的原因。
ERROR - SMTP AUTH extension not supported by server.
Traceback (most recent call last):
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1112, in _run_raw_task
self._prepare_and_execute_task_with_callbacks(context, task)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1285, in _prepare_and_execute_task_with_callbacks
result = self._execute_task(context, task_copy)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1315, in _execute_task
result = task_copy.execute(context=context)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/operators/email.py", line 87, in execute
mime_charset=self.mime_charset,
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
**kwargs,
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
conn.login(smtp_user, smtp_password)
File "/usr/lib64/python3.6/smtplib.py", line 697, in login
"SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
[2021-05-20 16:04:49,885] {taskinstance.py:1503} INFO - Marking task as FAILED. dag_id=my_data_pipeline, task_id=send_email_notification, execution_date=20210520T125758, start_date=20210520T130449, end_date=20210520T130449
[2021-05-20 16:04:49,914] {email.py:184} INFO - Email alerting: attempt 1
[2021-05-20 16:04:50,227] {email.py:184} INFO - Email alerting: attempt 1
[2021-05-20 16:04:50,484] {taskinstance.py:1509} ERROR - Failed to send email to: admin@vbo.local
[2021-05-20 16:04:50,484] {taskinstance.py:1510} ERROR - SMTP AUTH extension not supported by server.
Traceback (most recent call last):
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1112, in _run_raw_task
self._prepare_and_execute_task_with_callbacks(context, task)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1285, in _prepare_and_execute_task_with_callbacks
result = self._execute_task(context, task_copy)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1315, in _execute_task
result = task_copy.execute(context=context)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/operators/email.py", line 87, in execute
mime_charset=self.mime_charset,
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
**kwargs,
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
conn.login(smtp_user, smtp_password)
File "/usr/lib64/python3.6/smtplib.py", line 697, in login
"SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1852, in email_alert
send_email(self.task.email, subject, html_content)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
**kwargs,
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
conn.login(smtp_user, smtp_password)
File "/usr/lib64/python3.6/smtplib.py", line 697, in login
"SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1507, in handle_failure
self.email_alert(error)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 1854, in email_alert
send_email(self.task.email, subject, html_content_err)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 62, in send_email
**kwargs,
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 97, in send_email_smtp
send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, dryrun=dryrun)
File "/home/train/venvairflow/lib/python3.6/site-packages/airflow/utils/email.py", line 195, in send_mime_email
conn.login(smtp_user, smtp_password)
File "/usr/lib64/python3.6/smtplib.py", line 697, in login
"SMTP AUTH extension not supported by server.")
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.
[2021-05-20 16:04:50,538] {local_task_job.py:146} INFO - Task exited with return code 1
解决方案
尝试将 smtp 配置更新为smtp_starttls = True
所有主要电子邮件客户端都使用安全连接。关于 StartTLS,它是一个协议命令,用于通知电子邮件服务器电子邮件客户端想要从不安全的连接升级到使用 TLS 或 SSL 的安全连接。
推荐阅读
- html - 将 div 标签中的按钮定位在锚元素下
- applescript - 这个重复块中的“缺失值”来自哪里?
- javascript - 如何将使用 classList.contains() 作为条件的 if 语句转换为 switch 语句?
- pandas - 熊猫根据日期范围爆炸列
- python - Python __repr__ 方法未按预期工作
- spring - 如何以我创建的注释为条件?
- c# - 使用 C# 模式匹配避免箭头模式
- azure - 如何在 Azure AD B2C 中创建具有相同电子邮件但自定义用户属性不同的用户?
- python - 返回值和打印值 Python 之间的区别:
- cordova - Phonegap - 横幅和插页式广告都在展示