结论:优先使用云厂商SDK的send_sms方法,签名和模板须在控制台审核通过;腾讯云PhoneNumberSet必须为数组、TemplateID/SignName填12位ID、国内号码带+86;阿里云签名禁用泛化词、变量写法为${name}、需同一主体实名;勿手写HTTP请求,用SDK自动处理鉴权与重试。

直接说结论:别自己写群发逻辑,用云厂商 SDK 封装好的 send_sms 方法最稳;签名和模板必须先在控制台审核通过,否则调用必返回 InvalidParameter.SignatureIllegal 或 TemplateNotFound。
腾讯云 SMS 接口怎么填参数才不报错
常见错误是把 PhoneNumberSet 写成单个字符串(如 "+8613800138000"),实际它必须是字符串数组,哪怕只发一条也要包一层:["+8613800138000"]。签名 ID(SignName)和模板 ID(TemplateID)不能填中文名或备注名,得填控制台里显示的 12 位 ID 字符串(如 123456789012)。发送时间不支持自定义,SendDateTime 参数留空即可。
-
PhoneNumberSet必须是列表,不是字符串 -
TemplateID和SignName必须与控制台「已审核通过」状态下的值完全一致(大小写、空格、中英文标点都敏感) - 国内号码必须带
+86前缀,国际号码按 ITU-T E.164 格式,不能有横线或括号 - 腾讯云要求
ExtendCode(扩展码)为空字符串"",填None或省略会触发InvalidParameterValue
阿里云 AlibabaCloud SDK 的 send_sms 怎么避开签名格式坑
阿里云对签名内容卡得极严:不能含“官网”“平台”“系统”等泛化词,不能有 URL、电话、邮箱,长度限 12 个汉字或 24 个英文字符;且签名提交后,必须用同一主体资质(企业营业执照/个体户执照)完成实名认证,否则即使审核通过,调用时仍会返回 SignatureNotApproved。模板里的变量写法是 ${name},不是 {{name}} 或 %s,填错直接报 TemplateParameterError。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 签名初审失败大概率是用了“XX助手”“智能提醒”这类无指向性名称,建议绑定具体产品名,如“小账本记账App”
- 模板中变量名必须和
TemplateParam字典 key 完全一致,且所有变量都要传,缺一个就报错 - 阿里云不支持批量发不同内容,一次
send_sms调用只能指定一个模板 + 一组变量,群发需循环调用(注意 QPS 限制,默认 50TPS,超限返回Throttling)
Python 发短信要不要自己拼 JSON 请求体
完全没必要。腾讯云官方 SDK(tencentcloud-sdk-python)和阿里云 SDK(alibabacloud-python-sdk)都封装了完整的鉴权、签名、重试逻辑。手写 HTTP 请求容易漏掉 X-TC-RequestClient 头、搞错 Authorization 签名算法顺序,或者没处理好 Nonce 和 Timestamp 的时效性校验——这些都会导致 AuthFailure.SignatureFailure。用 SDK 只需配置 SecretId 和 SecretKey,其余交给 client.send_sms()。
- SDK 自动处理 UTC 时间戳、HMAC-SHA256 签名、URL 编码,手写极易出错
- 腾讯云 SDK 默认开启自动重试(3 次),阿里云需手动设置
config.autoretry = True - 别把
SecretKey硬编码进脚本,用环境变量读取:os.getenv("TENCENT_SECRET_KEY")
签名和模板的审核周期(通常 1–3 个工作日)比代码调试时间长得多,别等写完才去提工单;测试阶段务必用控制台「API 调试工具」先跑通单条请求,确认返回 SendStatusSet 里 Code 是 Ok 再集成到 Python 服务里。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










