如何解决Django使用Gmail发送邮件时的SMTPConnectError问题?
解决Django使用Gmail发送邮件时SMTPConnectError (421, b'Service not available')问题
你的Django邮件配置如下:
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "smtp.gmail.com" EMAIL_USE_TLS = True EMAIL_PORT = 587 EMAIL_HOST_USER = "example@gmail.com" EMAIL_HOST_PASSWORD = "password"
出现错误:
SMTPConnectError at /send/ (421, b'Service not available')
以下是针对性的解决步骤:
检查网络端口限制
部分网络(如企业内网、校园网)会屏蔽SMTP的587端口,可尝试切换到465端口并启用SSL加密,修改配置如下:EMAIL_USE_TLS = False EMAIL_USE_SSL = True EMAIL_PORT = 465同时可以用命令测试网络连通性:
telnet smtp.gmail.com 587或curl -v smtp://smtp.gmail.com:587,如果无法连通,说明网络层面被限制,需要联系网络管理员。验证应用专用密码的正确性
确保你的Google账户已经开启两步验证,应用专用密码是在开启两步验证后生成的,且生成时选择的应用类型为「邮件」。检查密码是否输入错误,注意不要包含多余空格或特殊字符。排查Google账户安全拦截
登录你的Google账户,查看「安全活动记录」,确认是否有来自当前服务器/IP的登录请求被拦截。如果有,手动允许该设备的访问权限,避免Google的安全机制阻止连接。临时测试本地网络环境
如果是服务器部署的应用,可尝试在本地开发环境用相同配置测试,排除服务器网络的问题。如果本地能正常发送,说明服务器网络存在限制。
内容的提问来源于stack exchange,提问作者Chinyere Unamba
相关产品推荐
相关产品推荐

