Django使用Gmail发邮件报错SMTPNotSupportedError求助
解决Django使用Gmail发送邮件时的SMTPNotSupportedError错误
1. 修正配置拼写错误
你的settings.py中存在关键拼写错误:EMAIL_USE_TSL = True 应改为 EMAIL_USE_TLS = True(正确拼写是TLS,而非TSL)。该错误会导致Django无法启用正确的加密协议,进而触发SMTP服务器不支持AUTH的报错。
修正后的完整邮件配置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = '<username@gmail.com>' EMAIL_HOST_PASSWORD = '<app_password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True # 修正拼写错误 EMAIL_USE_SSL = False
2. 确认Gmail应用密码有效性
- 必须先开启Google账户的两步验证,才能生成有效的应用密码。
- 应用密码是第三方应用专用的登录凭证,并非你的Google账户密码,确保复制时没有多余空格或字符。
3. 验证网络与端口设置
- 端口587搭配
EMAIL_USE_TLS = True是Gmail SMTP的标准配置;若改用SSL加密,需将端口改为465,同时设置EMAIL_USE_SSL = True、EMAIL_USE_TLS = False。 - 检查防火墙、代理或VPN是否拦截了对
smtp.gmail.com的587端口请求。
4. 测试修正后的配置
修改settings.py后重启Django项目,再执行以下代码测试:
from django.conf import settings from django.core.mail import send_mail send_mail( subject='测试邮件', message='这是一封测试邮件', from_email=settings.EMAIL_HOST_USER, fail_silently=False, recipient_list=['<username@gmail.com>'] )
若仍报错,可直接用smtplib测试连接,排除Django层面的问题:
import smtplib try: server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login('<username@gmail.com>', '<app_password>') print("SMTP连接成功") server.quit() except Exception as e: print(f"连接错误: {e}")
内容的提问来源于stack exchange,提问作者Bastian Johannesen
相关产品推荐
相关产品推荐

