Django发送Office365邮件遇SSLError或超时问题求助
解决Django连接Office365 SMTP的SSL错误与超时问题
问题根源
- 使用
django_smtp_ssl.SSLEmailBackend后端搭配587端口时,该后端会在连接初始阶段强制建立SSL加密,但Office365的587端口要求先建立明文连接,再通过STARTTLS升级加密,这就导致了SSL版本不匹配的错误。 - 465端口超时通常是网络层面的限制(如防火墙、ISP屏蔽),而非配置问题。
正确配置方案
替换后端为Django默认的SMTP后端,并调整参数如下:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.office365.com' EMAIL_PORT = 587 EMAIL_HOST_USER = config['EMAIL'] EMAIL_HOST_PASSWORD = config['PASSWORD'] DEFAULT_FROM_EMAIL = config['EMAIL'] EMAIL_USE_SSL = False EMAIL_USE_TLS = False EMAIL_USE_STARTTLS = True
额外注意事项
- 确认你的服务器/主机允许587端口出站,部分云服务商或企业网络会限制邮件端口。
- 如果开启了Office365账号的两步验证,
EMAIL_HOST_PASSWORD必须使用应用专用密码,而非普通登录密码。
内容的提问来源于stack exchange,提问作者vismodo
相关产品推荐
相关产品推荐

