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

Python smtplib发件返回250 OK但Gmail收件人未收到(企业域名)

问题

我用Python的smtplib+email.mime模块从企业域名邮箱向用户(大多是Gmail用户)发送OTP邮件。客户端返回状态正常,但测试时Gmail收件人从未收到邮件(收件箱、垃圾邮件都找不到)。发件邮箱是企业自有域名邮箱,邮件构造及SMTP客户端代码如下:

邮件构造代码:

msg = MIMEText(body)
msg["Subject"] = subject
msg["From"] = sender_email
msg["To"] = to_email

SMTP发送代码:

import smtplib
from email.mime.text import MIMEText
...
try:
    # server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
    server = smtplib.SMTP_SSL("<my-company-name>.com", 465)
    server.set_debuglevel(1)
    server.login(sender_email, sender_password)
    server.send_message(msg)
    server.quit()
except Exception as e:
    raise EmailServiceError(
        f"Error sending email: {e}",
        recipient=to_email,
        purpose=purpose,
        details={"error": str(e)}
    )

日志显示SMTP中继已接受邮件,且向同域同事发送测试邮件可成功接收,说明发送流程正常,问题可能出在Gmail的过滤或认证策略。现提出以下问题:

  1. 我的Python SMTP使用方式在逻辑上是否正确?
  2. 根据日志,是否更可能是送达性/认证问题(SPF/DKIM/DMARC、发件人信誉、中继策略)而非代码问题?
  3. 我无cPanel权限,应要求 infra/管理员团队执行哪些具体检查?

此前企业域名可正常向Gmail发送邮件,当前需在评审前明确问题以推进排查。


回答

1. Python SMTP使用逻辑是否正确?

你的代码逻辑没有明显错误:

  • 正确用MIMEText构造邮件核心内容,设置了Subject、From、To这些必要邮件头
  • SMTP_SSL连接企业SMTP服务器(465是标准SSL端口),开启调试、登录认证、发送消息、关闭连接的流程符合规范
  • 异常处理也覆盖了发送过程中的错误捕获

唯一可优化的点:可以给邮件加Reply-To头(和From一致即可),部分邮件服务商更认可这个字段;如果是批量发送要确保To字段用逗号分隔多个收件人,但你是单收件人场景,暂时没问题。

2. 是否更可能是送达性/认证问题而非代码问题?

是的,大概率是送达性或域名认证类问题:

  • 同域邮件能正常接收,说明你的代码、企业SMTP服务器的基础发送功能没问题
  • Gmail对外部邮件过滤极严,就算SMTP中继接受了邮件,也可能在Gmail后端过滤环节被直接丢弃(不会进入垃圾邮件),这种情况通常和域名认证、发件IP信誉相关
  • 之前能正常发送,说明是近期域名认证配置变更、发件IP被拉黑、企业SMTP中继策略调整等因素导致的

3. 要求 infra/管理员团队执行的具体检查项

  • 域名认证检查:
    • 验证SPF记录:确认企业域名的SPF记录包含当前发件的SMTP服务器IP/域名,格式符合标准(比如v=spf1 include:your-smtp-provider.com ~all)
    • 验证DKIM记录:检查域名的DKIM TXT记录是否存在,且企业SMTP服务器发件时会添加正确的DKIM签名
    • 验证DMARC记录:确认DMARC配置合理(比如v=DMARC1; p=quarantine; sp=quarantine; rua=mailto:dmarc@yourcompany.com),避免因策略过严导致邮件被丢弃
  • IP信誉检查:
    • 检查发件SMTP服务器IP是否被Gmail或主流反垃圾库(如Spamhaus、URIBL)列入黑名单
    • 确认该IP近期是否有大量投诉、退信情况,是否有良好的发送信誉
  • SMTP中继及邮件头检查:
    • 确认企业SMTP中继是否允许你的应用服务器IP发送邮件(部分企业会限制中继的来源IP)
    • 检查实际发送的邮件头是否合规,有没有伪造发件人、缺失必要字段的情况
    • 查看企业邮件服务器的后端日志,确认Gmail接收邮件后的反馈(部分拒收或退信提示不会返回给客户端,只会在服务器端记录)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 15:03:11