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

Python脚本无法向T-Mobile发送短信,AT&T接收正常

问题描述
  • 数月来一直用Python脚本通过Gmail SMTP向运营商网关发送短信:
    • 向AT&T手机号(发送至0987654321@txt.att.net)发送正常
    • 自2023年7月8日起,向T-Mobile手机号(发送至1234567890@tmomail.net)无法收到短信,但直接用邮箱客户端发送至该地址能正常接收
  • 脚本执行后,sendmail返回的TMobileResponse和ATTResponse均为{},无错误报告

简化版脚本:

import smtplib

# 替换为自己的Gmail账号、T-Mobile/AT&T号码
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login('SomeName@gmail.com', 'gmail应用专用密码') 

TMobileResponse = server.sendmail(
    'SomeName@gmail.com', 
    '1234567890@tmomail.net',
    'First is Subject', 
    'Second is the message'
) 
print('TMobileResponse = ', TMobileResponse)

ATTResponse = server.sendmail(
    'SomeName@gmail.com', 
    '0987654321@txt.att.net',
    'First is Subject', 
    'Second is the message'
) 
print('ATTResponse = ', ATTResponse)

server.quit()
排查与解决步骤

1. 修正SMTP邮件格式

smtplib.SMTP.sendmail的第三个参数是完整的邮件内容,而非单独拆分的主题和消息。你当前的写法不符合SMTP规范,T-Mobile网关对格式要求更严格,直接丢弃了不合规的邮件。

修改为标准邮件格式:

# 构造符合SMTP规范的邮件内容
tmo_msg = f"""From: SomeName@gmail.com
To: 1234567890@tmomail.net
Subject: First is Subject

Second is the message
"""

TMobileResponse = server.sendmail(
    'SomeName@gmail.com', 
    '1234567890@tmomail.net',
    tmo_msg
)

2. 开启SMTP调试模式

添加调试参数,查看与Gmail服务器的交互细节,确认邮件是否被正常转发:

server = smtplib.SMTP("smtp.gmail.com", 587)
server.set_debuglevel(1)  # 打印所有SMTP交互日志
server.starttls()

日志会显示服务器响应码、邮件传输状态,帮你判断是Gmail未转发还是T-Mobile网关拒收。

3. 检查Gmail过滤规则

登录Gmail账号,查看是否有自动过滤规则将发往tmomail.net的邮件标记为垃圾邮件或直接删除——即使脚本返回无错误,Gmail内部过滤也可能拦截这类邮件。

4. 更换T-Mobile网关地址

T-Mobile备用短信网关为1234567890@text.t-mobile.net,替换地址测试:

TMobileResponse = server.sendmail(
    'SomeName@gmail.com', 
    '1234567890@text.t-mobile.net',
    tmo_msg
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:13:36