Django对接Office 365 SMTP发信报SMTPAuthenticationError如何解决
Django Office 365 SMTP 535认证错误解决方案
- 修正Django配置项命名错误
你当前settings.py中的账号密码配置项不符合Django官方规范,Django无法读取到认证信息,需替换为以下正确配置:
EMAIL_HOST = 'smtp.office365.com' EMAIL_USE_TLS = True EMAIL_PORT = 587 # 官方要求的认证账号、密码配置项名,不可简写 EMAIL_HOST_USER = 'test@example.com' EMAIL_HOST_PASSWORD = '你的邮箱认证凭证' # Office 365强制要求发件人地址与认证账号完全一致,必须配置该项 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
确认单邮箱SMTP权限已开启
仅开启管理员级别的SMTP权限不会对单独邮箱生效,需进入Microsoft 365管理中心,在「活跃用户」列表中找到发件账号,依次进入「邮件」-「管理电子邮件应用」,勾选「经过身份验证的SMTP」后保存配置。适配多因素认证(MFA)规则
如果你的发件账号开启了多因素认证,不能直接使用账号登录密码作为认证凭证,需在账号安全设置中创建专用的应用密码,替换EMAIL_HOST_PASSWORD的取值。等待权限生效、排除端口限制
- 刚修改的SMTP权限存在15~60分钟的延迟生效期,修改后请等待一段时间再测试
- 确认你的服务器出口未封禁587端口,多数云服务商默认封禁25端口的出站请求,不要使用25端口对接Office 365 SMTP服务
你可以使用以下代码快速验证配置是否生效:
from django.core.mail import send_mail # 测试发送邮件 send_mail( subject='SMTP配置测试', message='这是一封测试邮件,代表你的SMTP配置已生效', recipient_list=['接收测试邮件的邮箱地址'], fail_silently=False )
内容的提问来源于stack exchange,提问作者Ravindra Gupta
相关产品推荐
相关产品推荐

