Python脚本无法向T-Mobile发送短信,AT&T接收正常
问题描述
- 数月来一直用Python脚本通过Gmail SMTP向运营商网关发送短信:
- 向AT&T手机号(发送至
0987654321@txt.att.net)发送正常 - 自2023年7月8日起,向T-Mobile手机号(发送至
1234567890@tmomail.net)无法收到短信,但直接用邮箱客户端发送至该地址能正常接收
- 向AT&T手机号(发送至
- 脚本执行后,
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
相关产品推荐
相关产品推荐

