You need to enable JavaScript to run this app. Django部署在IIS 10上用Gmail SMTP发邮件报530认证失败怎么解决?
优惠活动
大模型
产品
解决方案
定价
更多

Django部署在IIS 10上用Gmail SMTP发邮件报530认证失败怎么解决?

问题核心原因排查与解决

首先明确你的第一个疑问:你使用django.core.mail.backends.smtp.EmailBackend作为邮件后端时,完全不需要配置IIS的web.config中的SMTP相关设置,Django的邮件逻辑是独立的,不会读取IIS的.NET邮件配置项,你配置的<system.net><mailSettings>节点对Django无效,可以直接删除。

你遇到的530 Authentication Required报错,核心原因来自两个问题:

  1. 配置项拼写错误
    你的settings.py中写错了用户名配置项,正确的配置键是EMAIL_HOST_USER,你写的是EMAIL_HOST_USE,会导致Django根本读取不到你配置的发件人用户名,直接无身份信息请求SMTP服务就会触发认证失败。
  2. IIS进程无法读取环境变量
    你用os.environ.get读取环境变量,本地开发环境中你的用户账户下配置的环境变量可以正常读取,但部署到IIS后,Django运行在IIS应用程序池对应的身份下,默认不会继承系统环境变量,导致EMAIL_USER、EMAIL_PASS两个变量取值为空,认证信息缺失。

解决步骤

  • 第一步:修正settings.py的拼写错误,修改后配置如下:
# django settings.py 修正后配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('EMAIL_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASS')
  • 第二步:修复环境变量读取问题,二选一即可:
    • 测试阶段可以先把EMAIL_HOST_USER、EMAIL_HOST_PASSWORD直接写死为实际值(注意Gmail现在不支持直接用账号登录密码发信,必须开启两步验证后生成应用专用密码填入),先验证发信功能正常。
    • 生产环境如果要保留环境变量的配置方式,可以在你IIS对应的web.config的FastCGI配置节点中添加环境变量声明,示例如下:
    <configuration>
      <system.webServer>
        <handlers>
          <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\path\to\python\python.exe|C:\path\to\your\env\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <fastCgi>
          <application fullPath="C:\path\to\python\python.exe" arguments="C:\path\to\your\env\Lib\site-packages\wfastcgi.py">
            <environmentVariables>
              <environmentVariable name="EMAIL_USER" value="你的Gmail账号" />
              <environmentVariable name="EMAIL_PASS" value="你的Gmail应用专用密码" />
              <!-- 其他你需要的环境变量都可以在这里添加 -->
            </environmentVariables>
          </application>
        </fastCgi>
      </system.webServer>
    </configuration>
    
  • 第三步:如果修正后还是报错,登录你的Gmail账号安全中心,确认当前服务器IP的登录请求没有被拦截,同时确认你已经开启了两步验证、使用的是应用专用密码而非普通登录密码。

内容的提问来源于stack exchange,提问作者JustLearning123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 12:36:03