我正在尝试配置电子邮件,但出现以下错误。 运行任务时出现以下错误:- 我在 GCP Composer 中使用 Python3 和 Airflow 10.3 版本,需要帮助。
我的airflow.cfg
[email]
email_backend = airflow.contrib.utils.sendgrid.send_email
[smtp]
smtp_host = smtp.gmail.com
smtp_starttls = True
smtp_ssl = False
smtp_user = airflow
smtp_port = 587
smtp_password = mypassword
smtp_mail_from = <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="aec3d7cbc3cfc7c2eec9cfc3c7c280cdc1c3" rel="noreferrer noopener nofollow">[email protected]</a>
在我的 dag 文件中我创建了任务:- dag.py 文件:-
from airflow.operators.email_operator import EmailOperator
email_task=EmailOperator(task_id='email_task',to="<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="197c74787075597e78747075377a7674" rel="noreferrer noopener nofollow">[email protected]</a>", subject="test", html_content="<h1>Most important heading here</h1>", files=None, cc=None, bcc=None, mime_subtype='mixed', mime_charset='us_ascii', dag=dag)
出现错误:
ERROR - HTTP Error 401: Unauthorized python_http_client.exceptions.UnauthorizedError: HTTP Error 401: Unauthorize
最佳答案
该错误是授权错误,因此您需要检查是否正确设置了 Sendgrid API key (或密码,如果使用 smtp 服务器)。
根据您的airflow.cfg,在我看来您正在尝试同时使用Sendgrid和第三方smtp服务器。
电子邮件标志决定使用哪一个。在本例中,email_backend = airflow.contrib.utils.sendgrid.send_email
标志指定您将使用 Sendgrid。
致configure Sendgrid作为您的电子邮件服务器,您需要获取 SENDGRID_API_KEY
并将 key 和 SENDGRID_MAIL_FROM
设置为环境变量。
另一方面,如果您want to use another smtp server ,您必须将电子邮件标志更改为 email_backend = airflow.utils.email.send_email_smtp
。在这种情况下,您需要覆盖 smtp 用户和密码。
关于smtp - 从 GCP Composer Airflow 发送电子邮件时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60136511/