• 某程序员教你3分钟接入阿里大于发短信功能


    前言

    各种短信验证码通知类的短信、推销类的短信,还有骚扰类的短信,在我们的生活中层出不穷。那么这些短信是如何发送的呢,这里今天老哥就来教教大家,如何发送这个“骚扰”短信。

    流程预览

    入驻阿里云

    1.阿里云注册入口:点击注册页面

    2.实名认证:点击进行实名认证

    3.绑定企业支付宝:点击绑定企业支付宝

    开通短信服务

    1.开通短信服务:点击开通短信服务

    2.进入控制台:点击查看控制台页面

    获取AccessKey

    1.创建AccessKey: 点击创建AccessKey

    2.获取AccessKey ID和AccessKey Secret:点击查看AccessKey ID和AccessKey Secret

    创建签名和模版

    1.创建签名前查看短信规则和审核规则:短信业务规则审核规则

    2.创建短信签名:点击查看创建短信签名

    3.创建短信模版:点击查看创建短信模版

    代码实现

    pom配置

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.0.6</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
        <version>1.1.0</version>
    </dependency>
    复制代码

    java代码(国内短信版本)

    public class phone {

      /**
       * 产品名称:云通信短信API产品,开发者无需替换
       */
      static final String product = "Dysmsapi";

      /**
       * 产品域名,开发者无需替换
       */
      static final String domain = "dysmsapi.aliyuncs.com";

      // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
      static final String accessKeyId = "";
      static final String accessKeySecret = "";

      public static SendSmsResponse sendSms(String phone, Integer codeMsg, String templateCode, String signName) throws ClientException {

          //可自助调整超时时间
          System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
          System.setProperty("sun.net.client.defaultReadTimeout", "10000");

          //初始化acsClient,暂不支持region化
          IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
          DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
          IAcsClient acsClient = new DefaultAcsClient(profile);

          //组装请求对象-具体描述见控制台-文档部分内容
          SendSmsRequest request = new SendSmsRequest();
          //必填:待发送手机号
          request.setPhoneNumbers(phone);
          //必填:短信签名-可在短信控制台中找到
          request.setSignName(signName);
          //必填:短信模板-可在短信控制台中找到
          request.setTemplateCode(templateCode);
          //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
          request.setTemplateParam("{"code": "+ codeMsg +"}");

          //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
          //request.setSmsUpExtendCode("90997");

          // 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
          request.setOutId("yourOutId");

          //hint 此处可能会抛出异常,注意catch
          SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);

          return sendSmsResponse;
      }

      public static void main(String[] args) {
          Integer code = (int)((Math.random()*9+1)*100000);
          try {
              SendSmsResponse response = sendSms("电话号", code, "模板code", "签名名称");
              System.out.println(response.getCode() + " and " + response.getMessage());
          } catch (ClientException e) {
              e.printStackTrace();
          }
      }
    }
    复制代码

    结语

    由于这个发短信要钱,老哥就没演示最后发短信的那一步,归根结底,还是老哥太穷了,泪目!!!



  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/itlaoge/p/14219655.html
Copyright © 2020-2023  润新知