# 阿里云国际短信发送 Demo ## 功能说明 使用阿里云 SMS 服务发送国际短信的独立 Python 脚本。 - ✅ 支持发送到美国、加拿大、新加坡等国家/地区 - ✅ 支持 OTP(验证码)、NOTIFY(通知)、MKT(推广)三种类型 - ✅ 完整的错误处理和响应解析 ## 安装依赖 ```bash pip install -r requirements.txt ``` 或直接安装: ```bash pip install alibabacloud-dysmsapi20180501 ``` ## 配置说明 ### 1. AccessKey 配置 AccessKey 已直接配置在脚本中(`main()` 函数),无需额外配置环境变量。 如需修改 AccessKey,请编辑 `send_international_sms.py` 文件中的以下变量: ```python ACCESS_KEY_ID = 'LTAI5tQ6iFj9XMSZygRhKL4F' ACCESS_KEY_SECRET = 'eXEfRLenQfOCLWkj307jv48rBUWNHK' ``` ### 2. Sender ID 注册要求 | 国家/地区 | 注册要求 | |----------|---------| | 美国、加拿大 | 需完成 10 DLC 注册,使用运营商提供的 Sender ID | | 新加坡 | 需在 IMDA 完成 SSIR 注册的 Sender ID | | 其他地区 | 支持 Sender ID 发送,数字+字母最长11位,纯数字最长15位 | ## 使用方法 ### 基本用法 ```python from send_international_sms import InternationalSMSClient # 创建客户端 client = InternationalSMSClient( access_key_id='your-access-key-id', access_key_secret='your-access-key-secret' ) # 发送验证码短信 result = client.send_sms( to="6212345****01", # 国际区号+号码 message="Your verification code is 123456", sender_id="Alicloud", # 已注册的 Sender ID sms_type=InternationalSMSClient.TYPE_OTP ) if result["success"]: print(f"发送成功! 消息ID: {result['message_id']}") else: print(f"发送失败: {result['error']}") ``` ### 运行示例 ```bash python send_international_sms.py ``` ## API 参数说明 ### 请求参数 | 参数 | 类型 | 必选 | 说明 | |-----|------|------|------| | To | String | 是 | 接收短信号码,格式:国际区号+号码,例如 "8521245567****" | | From | String | 是 | 发送方标识(Sender ID),需根据目标国家完成相应注册 | | Message | String | 是 | 短信完整内容(美国、加拿大需填写报备内容) | | Type | String | 是 | 短信类型:OTP(验证码)/ NOTIFY(通知)/ MKT(推广) | | TaskId | String | 否 | 任务 ID,长度不超过 255 个字符 | | ValidityPeriod | Integer | 否 | 短信有效时长,单位:秒 | | ChannelId | String | 否 | 通道 ID | ### 返回数据 成功响应示例: ```json { "success": true, "response_code": "OK", "response_description": "The SMS Send Request was accepted", "message_id": "1008030300****", "request_id": "F655A8D5-B967-440B-8683-DAD6FF8DE990", "segments": "1", "to": "8521245567****", "from": "Alicloud321", "number_detail": { "carrier": "CMI", "country": "Hongkong,China", "region": "HongKong" } } ``` 失败响应示例: ```json { "success": false, "error": "错误信息", "request_id": "xxx" } ``` ## 注意事项 1. **计费说明**: 接口调用成功即按条计费,发送返回"失败"同样计费 2. **QPS 限制**: 单用户 QPS 限制为 2000 次/秒 3. **固定配置**: - region_id 必须为 `ap-southeast-1`(新加坡) - endpoint 必须为 `dysmsapi.ap-southeast-1.aliyuncs.com` - API 版本为 `2018-05-01` 4. **内容审核**: 美国、加拿大发送的内容需提前报备 5. **账户余额**: 套餐包在账户欠费时不可使用,请在调用接口前检查账户余额及套餐包余量 ## API 版本说明 - **API 版本**: 2018-05-01 - **服务地址**: 新加坡(ap-southeast-1) - **Endpoint**: dysmsapi.ap-southeast-1.aliyuncs.com - **QPS 限制**: 单用户 QPS 限制为 2000 次/秒 ## 参考文档 - [阿里云国际短信 API 文档(2018-05-01)](https://next.api.aliyun.com/api/Dysmsapi/2018-05-01/SendMessageToGlobe) - [错误码查询](https://error-center.aliyun.com/status/product/Dysmsapi)