阿里云通过API发送短信
短信服务提供短信发送、发送状态查询等API接口,您可以通过调用API接口申请签名和模板,并给目标用户发送短信。
您可以根据业务需要和自身情况选择合适的方式调用短信服务API: 本文将以SDK的方式引导您使用短信服务。您可以先通过OpenAPI 开发者门户,查看、体验短信服务API后,根据本文指引开始集成短信服务API。整体流程: 准备事项 说明 相关文档 因短信签名实名制要求,使用短信服务必须提供企业资质信息。 在当前的短信签名实名制要求下,个人账号的自用资质无法通过签名实名制报备,个人用户请使用短信认证产品或升级为企业认证账号。 服务开通 登录短信服务控制台,开通短信服务。 用户权限 阿里云主账号拥有较高权限,建议您通过RAM用户进行API调用和日常运维。 您可以通过RAM控制台,单击RAM用户名称查看用户权限。请确保您所调用API的RAM用户已有短信服务相关权限: AccessKey ID 您可以登录RAM控制台,单击RAM用户名称查看AccessKey ID。 AccessKey Secret 创建后不支持二次查看。若本地无备份,建议重新创建一对AccessKey使用。 设置预警 为保障您的业务稳定和资金安全,建议您登录控制台通用设置-国内消息设置页面,设置联系人并开启和配置验证码防盗刷监控、发送量预警、套餐包余量预警和发送频率预警等。当触发预警时,平台会通知到联系人,联系人可第一时间收到预警通知后及时处理。 建议您阅读验证码防盗刷,了解更多验证码盗刷的防御方式。 本文以Java语言为例,进行后续操作。更多语言及其SDK安装方式,请参见安装与使用教程。 短信服务所提供的API基本信息参见如下: 接口版本 RPC (Endpoint) 中国站请使用 dysmsapi.aliyuncs.com HTTP调用使用端口为80,HTTPS调用使用端口为443 更多接口信息,请参见API概览。 使用SDK发送短信(调用SendSms接口)的代码示例如下,请根据注释完成参数填写。 您可以访问 OpenAPI 门户,查看各语言 SDK 请求完整示例。如果您需要自行封装请求来进行API调用,请参见SendSms和签名示例代码。
适用于习惯交互式操作界面的场景,或者初次使用阿里云产品的开发者用户。您可以在OpenAPI开发者门户中调试和获取SDK请求示例。
支持多种编程语言,包括Java、Go、C#、PHP、Node.js/TypeScript、Python。使用SDK集成短信服务,可提升您使用短信服务的开发效率。
阿里云SDK已经封装了签名、超时、重试等机制,我们建议您使用SDK进行集成,降低开发成本。如果您需要自行封装请求来进行API调用,请参见SendSms和签名示例代码。准备工作
重要说明 环境配置
请在您的Maven项目的pom.xml文件中,在标签内添加以下信息并将 the-latest-version 替换为最新版本号。保存后请重新加载Maven依赖。API基本信息
API调用流程
代码示例
package com.aliyun.sample; import com.aliyun.teaopenapi.models.Config; import com.aliyun.dysmsapi20170525.Client; import com.aliyun.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import static com.aliyun.teautil.Common.toJSONString; public class Sample { public static Client createClient() throws Exception { Config config = new Config() // 配置 AccessKey ID,请确保代码运行环境设置了环境变量。 .setAccessKeyId(System.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID')) // 配置 AccessKey Secret,请确保代码运行环境设置了环境变量。 .setAccessKeySecret(System.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')); // System.getenv()方法表示获取系统环境变量,请配置环境变量后,在此填入环境变量名称,不要直接填入AccessKey信息。// 配置 Endpoint config.endpoint = 'dysmsapi.aliyuncs.com'; return new Client(config); } public static void main(String[] args) throws Exception { // 初始化请求客户端 Client client = Sample.createClient(); // 构造请求对象,请填入请求参数值 SendSmsRequest sendSmsRequest = new SendSmsRequest() .setPhoneNumbers('1390000****') .setSignName('阿里云') .setTemplateCode('SMS_15305****') .setTemplateParam('{\'name\':\'张三\',\'number\':\'1390000****\'}'); // 获取响应对象 SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest); // 响应包含服务端响应的 body 和 headers System.out.println(toJSONString(sendSmsResponse)); } }

