Google SMTP returns 需要身份验证,但它是作为应用程序密码完成的

Google SMTP returns required authentication but it's done as an app password

我正在 Airflow 2.1.2 上设置 SMTP 服务。 我得到这个非常明显的错误:

smtplib.SMTPSenderRefused: (530, b'5.7.0 Authentication Required. Learn more at\n5.7.0  https://support.google.com/mail/?p=WantAuthError w5sm3433302wra.87 - gsmtp'

但是身份验证已经完成,我使用的是具有 2 步身份验证的电子邮件,所以我创建了一个应用程序密码,并且我在 google 帐户安全选项卡中识别了 activity..

我的设置是:

AIRFLOW__EMAIL__EMAIL_BACKEND   airflow.utils.email.send_email_smtp
AIRFLOW__SMTP__SMTP_HOST    smtp.gmail.com
AIRFLOW__SMTP__SMTP_MAIL_FROM   my email
AIRFLOW__SMTP__SMTP_PASSWORD    my app pwd of 16 chars
AIRFLOW__SMTP__SMTP_PORT    587
AIRFLOW__SMTP__SMTP_SSL False
AIRFLOW__SMTP__SMTP_STARTTLS    True
AIRFLOW__SMTP__SMTP_USER    my email

我检查了一下,密码或电子邮件中都没有额外的 space 或类似的东西。

为什么真正完成认证后返回需要的认证?

不确定为什么它不起作用。但是你看到了吗:

Fetching SMTP credentials from configuration variables will be deprecated in a future警告?如果您的环境变量将被使用,您应该这样做。

如果您没有看到它,那么您可能在连接数据库中有 smtp_default 个连接。

在 Airflow 2 中,SMTP 的身份验证已达到与其他连接相同的级别,而不是通过环境变量传递 user/password,它们应该在 [=25] 中配置为 login/password =]连接。

这些变量应该仍然可以作为后备,但是如果你已经创建了 smtp_default 连接并且配置了一些 login/password(甚至是空的),那么将使用这些变量而不是 ENV 变量。

在您的情况下,解决方案可能是在连接中设置 login/password。