使用Google SMTP发送短信失败:代码无报错但未收到短信
问题排查:代码无报错但收不到短信
以下是几个可能的问题及解决办法:
目标号码格式错误
代码里to_number = '0000{}'.format(carriers['att'])中的0000是占位符,必须替换为完整的10位对应运营商手机号码(比如1234567890),同时要确认该号码确实属于AT&T,运营商网关不匹配会直接导致消息无法送达。运营商网关地址存在错误
你定义的carriers字典里,tmobile对应的网关有多余空格,应改为'@tmomail.net'而非' @tmomail.net';另外部分运营商网关可能已更新(比如Sprint归属T-Mobile后原网关可能失效),建议核对目标运营商当前有效的官方SMS/MMS网关地址。消息格式不符合网关要求
多数运营商网关要求消息遵循标准邮件格式,纯文本内容可能被拦截。可以将消息包装为带主题的格式:omessage = "Subject: \n\nHi this is test."即使主题为空,也需要包含
Subject:字段来符合邮件规范。Gmail SMTP连接未正确关闭
发送消息后未关闭SMTP连接,可能导致消息未完全发送。建议在server.sendmail后添加:server.quit()确保连接正常终止,消息完整提交。
Gmail账号权限验证问题
虽然使用了应用专用密码,但需确认:- 你的Google账号已开启两步验证(应用专用密码仅对开启两步验证的账号生效);
- 检查Gmail账号的“最近活动”,确认SMTP登录未被标记为异常操作。
运营商拦截或号码限制
部分运营商会过滤来自未知邮箱的消息,可先手动从Gmail发送邮件到目标号码的网关地址(比如1234567890@mms.att.net),测试是否能收到,排除代码外的问题;另外预付费套餐、虚拟运营商号码可能不支持网关短信接收,可换用其他号码测试。
内容的提问来源于stack exchange,提问作者Manikandan
相关产品推荐
相关产品推荐

