smtp - 从 GCP Composer Airflow 发送电子邮件时出现错误

标签 smtp airflow sendgrid http-status-code-401 google-cloud-composer

我正在尝试配置电子邮件,但出现以下错误。 运行任务时出现以下错误:- 我在 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/

相关文章:

parsing - 是否有一段公开可用的 Coldfusion 代码可以可靠地将电子邮件 "source code"转换为纯文本?

azure - Airflow 连接: How to create an airflow connection to Azure Blob Storage using Service Principal?

python - Airflow BashOperator 找不到 Bash

django - 使用 Django 设置 SendGrid - 用户输入 "from_email"

node.js - Sendgrid 入站解析 Webhook 电子邮件未在 Sendgrid 上收到

smtp - Jira 不适用于 mailgun.org

python - 通过 Python 发送电子邮件的最简单方法

python - Docker中的 Airflow initdb引发ImportError:无法导入名称 'import_string'

php - Sendgrid 错误 400 错误请求

java - 如何确定 SMTP 和 POP 响应的结束?