阿里云短信

说明

我的业务相对单一,简单的来说,就是:

  • 注册时提供手机验证码
  • 登录时,可以通过手机验证码
  • 修改密码时,通过手机验证码

直接考虑使用阿里云短信业务

使用

前提:注册阿里云账号,并完成实名制认证
1、要有短信发送量
(1)阿里云提供了免费使用的100条限额,可以领取进行学习使用
前往:https://free.aliyun.com/?spm=5176.13910061.7708050970.1.7f8347efjDTrys
阿里云很多业务都提供限量或限时的试用免费套餐。如果学习短信,点击《短信免费使用套餐包》
(2)购买套餐
前往:https://common-buy.aliyun.com/?spm=5176.12207334.0.0.64f31cbeTwFph7&&commodityCode=newdysmsbag#/buy
如果首次购买,会优惠70元。
最低的套餐优惠后价格为180,包括5000条国内通用短信,时长2年。
2、测试(可以不用)
如果有了短信发送量,可以在以下页面进行测试,发送消息到本机:
https://dysms.console.aliyun.com/dysms.htm?accounttraceid=5d19ffca378e4784bd19ba63085ed246umbw&spm=5176.12901015.0.i12901015.690f525cy9tJK3#/quickStart

3、签名和模板
https://dysms.console.aliyun.com/dysms.htm?accounttraceid=5d19ffca378e4784bd19ba63085ed246umbw&spm=5176.12901015.0.i12901015.690f525cy9tJK3#/domestic/text/sign
(1)添加签名
主要指使用场景,比如某某网站,某某app。
这里可以写:“个人开发,学习使用”,或者“个人网站”。
(2)模板
模板就是发送的短信的内容,比如:

你的验证码${code},该验证码5分钟内有效,请勿泄露于他人!

其中的code在使用时可以通过代码替换为具体的字符串。

4、AccessKey

点击右上角《AccessKey》,进入。会弹出

可以选择《继续使用AccessKey》,但不建议:
这里给出的密钥具有你在阿里云的所有权限,一旦泄露,所有产品都可能受到波及。

选择《开始使用子用户AccessKey》,在RAM访问控制下选择《用户》:
创建的子账号,可以指定权限,使其只具有阿里云下部分产品的功能(注意:这里有个小bug,刚进入该页面时,会被提示创建子账号,如果没有创建则可以考虑直接创建。如果已经创建,点击用户组,再点击用户,会刷新出已创建账号)
创建子账号时,需要自己记录下密钥信息,之后不会再显示。如果确实忘记,可以删除再创建密钥。

5、发送短信API
发送短信阿里云提供了两种方式:OpenAPI Explorer和SDK(阿里云推荐)
我这里使用第一种。
https://api.aliyun.com/new?spm=5176.12207334.0.0.b8041cbeiK2J3u#/?product=Dysmsapi&api=SendSms&params={"RegionId"%3A"cn-hangzhou"%2C"PhoneNumbers"%3A""%2C"SignName"%3A""%2C"TemplateCode"%3A""}&tab=DEMO&lang=JAVA
(1)配置pom.xml

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.3</version>
</dependency>

(2)代码

public class SendSMS {
    public static void main(String[] args) {
          //1、给出accessKeyId和accessSecret
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI4*******Eb99", "izGrc2P1******Enoxa");
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
            //2、给出要接收短信的手机号
        request.putQueryParameter("PhoneNumbers", "18190614119");
            //3、给出签名名称
        request.putQueryParameter("SignName", "skytreestudy");
            //4、给出模板code
        request.putQueryParameter("TemplateCode", "SMS_204297813");
            ///5、以json格式替换模板中的参数
        request.putQueryParameter("TemplateParam", "{"code":123456}");
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

api参考
https://help.aliyun.com/document_detail/101339.html?spm=a2c4g.11186623.2.29.3d473e2cXExCtX

原文地址:https://www.cnblogs.com/heibaimao123/p/13813101.html