尽管凭据正确,Django Gmail 身份验证仍失败

Django Gmail auth fails despite correct credentials

我通过 gmail 从 django 发送邮件突然停止 工作。现在已经运行一年多了,所以我认为我的基本设置应该仍然没问题。有问题的 Google 帐户启用了 2FA enabled 并且在下面的配置中使用的密码是生成的 app-password,而不是主要的账号密码。我已经通过浏览器登录 Gmail 并检查它没有被锁定并且没有超过配额。

settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587 
EMAIL_HOST_USER = '<MY-MAIL-ADDRESS>'
EMAIL_HOST_PASSWORD = '<PASSWORD>'
DEFAULT_FROM_EMAIL = '<MY-MAIL-ADDRESS>'

我已经使用以下命令验证了我的凭据:(ofc shell 扩展不起作用我只是将命令的输出粘贴到该位置)

$ openssl s_client -connect smtp.gmail.com:587 -starttls smtp
>AUTH PLAIN $(echo -ne '[=11=]MY-MAIL-ADDRESS[=11=]PASSWORD' | base64)
>235 2.7.0 Accepted

但是,如果我尝试使用 send_mail 它会反弹:

In [1]: from django.core.mail import send_mail                                                                                                                           
                                                                                                                                                                         
In [2]: send_mail('Subject', 'This is a test message', 'MY-MAIL-ADDRESS', ('recipient@address.com',))  
 (Output shortened)
SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials r17sm9826202wmq.5 - gsmtp')

有什么可能(突然)出错的提示吗?

事实证明,我们被Google列入了黑名单。

我使用此 guide 将我的网络服务器添加到 IP 白名单。之后,邮件又开始工作了。

有趣的是,甚至 Google 的支持者(对于付费 Google Workspace 帐户,而不是免费的 gmail)也无法告诉我这一点,我不得不自己试验