首页 > 解决方案 > SMTPAuthenticationError:Django 中的身份验证不成功 [BL1PR13CA0128.namprd13.prod.outlook.com]

问题描述

我正在尝试从 Django API 发送和发送电子邮件(从我的个人 hotmail 帐户)。当我通过 Postman 向本地服务器发出请求时,它可以工作,但是当我在 Heroku 上托管我的应用程序时,它会引发以下异常:

在此处输入图像描述

我已经阅读并且 Hotmail 帐户具有类似 SMTP 权限的内容:

在此处输入图像描述

这是我的 Django 配置变量:

CORS_ALLOWED_ORIGINS = ['https://gianlop3z-dev.web.app']

EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST = 'smtp.office365.com'
EMAIL_HOST_PASSWORD = environ.get('EMAIL_HOST_PASSWORD')
EMAIL_HOST_USER = environ.get('EMAIL_HOST_USER')

django_heroku.settings(locals())

环境变量在 Heroku 中。

标签: djangoapismtpsmtpclienthotmail

解决方案


确保您的 Outlook 帐户设置在弹出选项下更改为是。(我相信你已经按照你的照片做了)

检查您的 Outlook 帐户是否被异常活动阻止,在这种情况下,您可能需要验证您的帐户(通过分配的手机#)并验证和查看您的活动(电子邮件应如下所示)

为了帮助确保您的安全,我们已阻止访问您的收件箱、联系人列表和日历以进行该登录。请查看您最近的活动,我们将帮助您保护您的帐户。要重新获得访问权限,您需要确认最近的活动是您的。查看最近的活动 感谢 Microsoft 客户团队

在您的 settings.py 更改如下

EMAIL_HOST='smtp-mail.outlook.com'
EMAIL_PORT=587
EMAIL_HOST_USER='your email'
EMAIL_HOST_PASSWORD='password'
EMAIL_USE_TLS=True
server = smtplib.SMTP('smtp.office365.com', 587) 
server.starttls()

最后确保导入 smtplib


推荐阅读