Python的 smtplib返回250 OK,但Gmail的收件人始终收不到邮件(发件人使用的是公司域名)

编程语言 2026-07-10

我正在使用Python (smtplib + email.mime),通过我们公司域名邮箱账户向用户发送一次性密码(OTP)邮件(很多用户在使用Gmail)。

尽管客户端显示200,但我的测试邮件中从未收到发送的邮件。

我的发件邮箱是公司的邮箱,因此该账户是他们自有业务域名邮箱。

在构造好邮件之后

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

我创建了SMTP客户端。我承认把客户端命名为“server”可能不是最佳选择,但把这点信息说清楚也很重要。以后我可能会把client这个变量名改成“_client”。

然后通过传入构造好的邮件来发送。对于现在,我把公司邮箱(发件人邮箱)写死为发送邮箱,外发端口设为456,至于入站端口是否需要使用,我现在认为暂时不会使用。

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)}
        )

以下是我收到的日志,涉及对gatorxxxx.hostgator.com、 的信息进行脱敏处理

Logs:
SMTP Connection Established: gatorxxxx.hostgator.com
Authentication:
235 Authentication succeeded
Sender Accepted:
250 OK - mail from: no-reply@<my-company-email>.com
Recipient Accepted:
250 Accepted - rcpt to: <receiver-test-email>@gmail.com
Message Data Sent:
250 OK - id=1w22kd-00000001mHT-3KDl
Content:
Subject: Email Verification Code
From: no-reply@<my-company-email>.com
To: <receiver-test-email>@gmail.com
Body: Your email verification code is: 004040
Please enter this code to verify your account.
SMTP Session Closed:
221 gatorxxxx.hostgator.com closing connection

因此SMTP中继接受了该邮件,但Gmail收件人并未收到(在我的测试中连收件箱/垃圾邮件都没有看到)。

从之前的一个类似但并非完全相同的问题中,我记得在调试时使用上面相同的代码,向我们自有域名下的同事发送了一封测试邮件(coworker@<my-company-email>.com)。他们成功收到了。这表明SMTP发送流程在工作,投递问题很可能只与Gmail相关(可能是过滤或认证策略所致),而不是普遍的发送失败。

问题:

  1. 我的Python SMTP用法在概念上正确吗?
  2. 根据这些日志,这更可能是投递/认证问题(SPF/DKIM/DMARC、发件人声誉、中继策略),而不是代码问题吗?
  3. 应该请我们的基础设施/管理员团队运行哪些具体检查(因为我没有cPanel访问权限)?

最后,我确实检查了公司域名是否被列入黑名单,但我相信在过去我们开发的应用也能够向Gmail和其他邮箱账户发送邮件。 虽然这问题看起来是重复的,或者我应该先尝试所有选项(我显然还没有到cPanel),但我仍然在提这个问题,是因为我今天有一次评审,需要向上级明确解释我们面临的问题是什么,以便如果确实需要配置cPanel,我们可以迅速开始。如果不需要,我会在评审前解决。

解决方案

enter image description here问题已被识别。

该邮件no-reply@.com的域名认证要求未通过。它被Gmail伪造,并被Proton Mail不当转发(进入垃圾邮件)。

在Stack Overflow上可能会有专门的文档帖子(未来也可能成为以文档为中心的帖子,只是我一个想法),因此如果有人知道“authentication requirements”实际指的是什么意思,这篇帖子将更有价值。就我而言,我已经找到了一个足以指引我从这里往前走的线索。非常感谢大家。谢谢!

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章