You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails生产环境使用Outlook SMTP发邮件失败:认证错误

解决Rails生产环境Office365 SMTP认证失败问题

问题重现

本地环境使用以下Rails邮件配置可正常发送邮件,但生产环境抛出Net::SMTPAuthenticationError (535 5.7.3 Authentication unsuccessful)错误:

config.action_mailer.default_url_options = { host: ENV["HOST_NAME"] }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_options = { from: ENV["EMAIL_USERNAME"] }
config.action_mailer.perform_caching = false

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.office365.com',
  port:                 587,
  domain:               'smtp.office365.com',
  user_name:            ENV["EMAIL_USERNAME"],
  password:             ENV["EMAIL_PASSWORD"],
  authentication:       :login,
  enable_starttls_auto: true
}

排查与解决步骤

  • 验证生产环境环境变量
    登录生产环境服务器,在Rails控制台执行以下命令,确认EMAIL_USERNAME和EMAIL_PASSWORD的取值和本地完全一致,无拼写错误、多余空格或特殊字符未转义:

    puts ENV["EMAIL_USERNAME"]
    puts ENV["EMAIL_PASSWORD"]
    
  • 调整Office365账户安全设置

    • 若账户开启了现代认证,传统密码认证会失效,需开启两步验证后生成应用密码,用应用密码替换生产环境的EMAIL_PASSWORD。
    • 联系Office365管理员,确认账户未被设置SMTP发送限制的安全策略。
  • 优化SMTP配置细节

    • 将domain字段改为你的实际业务域名(如yourcompany.com),而非smtp.office365.com,Office365会验证发件域名的合法性。
    • 尝试将authentication改为:plain,部分Office365环境下该认证方式兼容性更好。调整后的SMTP配置示例:
      config.action_mailer.smtp_settings = {
        address:              'smtp.office365.com',
        port:                 587,
        domain:               'yourcompany.com',
        user_name:            ENV["EMAIL_USERNAME"],
        password:             ENV["EMAIL_APP_PASSWORD"], # 替换为应用密码
        authentication:       :plain,
        enable_starttls_auto: true
      }
      
  • 检查生产环境网络连通性

    • 确认生产服务器的出站端口587未被防火墙或云服务商拦截,可通过telnet测试连接:
      telnet smtp.office365.com 587
      
      若能看到220 MW4P221CA0003.NAMP221.PROD.OUTLOOK.COM Microsoft ESMTP MAIL Service ready的提示,说明网络连通正常。
  • 确保发件人地址一致性
    确认default_options[:from]的邮箱地址和smtp_settings[:user_name]完全一致,Office365要求发件人必须与SMTP认证账户匹配,不能使用其他邮箱地址作为发件人。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:45:53