短信服务-阿里云

1、短信服务介绍

在项目中,如果我们要实现短信发送功能,我们无需自己实现,也无需和运营商直接对接,只需要调用第三方提供的短信服务即可。目前市面上有很多第三方提供的短信服务,这些第三方短信服务会和各个运营商(移动、联通、电信)对接,我们只需要注册成为会员,并且按照提供的开发文档进行调用就可以发送短信。需要说明的是,这些短信服务一般都是收费服务。

常用短信服务:

  • 阿里云

  • 华为云

  • 腾讯云

  • 京东

  • 梦网

  • 乐信

2、阿里云短信服务介绍

阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用。

应用场景:

场景案例
验证码APP、网站注册账号,向手机下发验证码; 登录账户、异地登录时的安全提醒; 找回密码时的安全验证; 支付认证、身份校验、手机绑定等。
短信通知向注册用户下发系统相关信息,包括: 升级或维护、服务开通、价格调整、 订单确认、物流动态、消费确认、 支付通知等普通通知短信。
推广短信向注册用户和潜在客户发送通知和推广信息,包括促销活动通知、业务推广等商品与活动的推广信息。增加企业产品曝光率、提高产品的知名度。

阿里云短信服务官方网站: https://www.aliyun.com/product/sms?spm=5176.19720258.J_8058803260.52.5c432c4a11Dcwf

image-20230413200446616

3、阿里云短信服务准备

3.1、注册账号

阿里云官网:https://www.aliyun.com/

image-20230413200657605

image-20230413200801653

当我们把账号注册完毕之后,我们就可以登录到阿里云系统控制台。

image-20230413200933302

image-20230413201015258

3.2、开通短信服务

image-20230413201122444

3.3、设置短信签名

image-20230413201312941

  • 注:个人申请签名不太好申请,所以我们可以选择 测试方式申请

image-20230413202031957

image-20230413202104637

注意:

目前,阿里云短信服务申请签名主要针对企业开发,个人申请时有一定难度的,在审核时,会审核资质,需要上传营业执照 ;

所以,我主要是演示一下短信验证码如何发送,大家只需要学习这块的开发流程、实现方式即可,无需真正的发送短信。毕竟咱们也只是先为了学习么。

3.4、设置短信模板

  • 签名申请通过之后,才可以申请短信模板

什么是短信模板?

  • 短信模板包含短信发送内容、场景、变量信息

image-20230413202230115

image-20230413202331312

  • 添加模板:按要求申请即可(关联签名:只有申请通过后,才会显示)

image-20230413202512220

添加的短信模板,也是需要进行审核的只有审核通过,才可以正常使用。

3.5、设置AccessKey

AccessKey 是访问阿里云 API 的密钥,具有账户的完全权限,我们要想在后面通过API调用阿里云短信服务的接口发送短信,那么就必须要设置AccessKey。

我们点击右上角的用户头像,选择"AccessKey管理",这时就可以进入到AccessKey的管理界面。

image-20230413202719207

进入到AccessKey的管理界面之后,提示两个选项 “继续使用AccessKey” 和 “开始使用子用户AccessKey”,两个区别如下:

1). 继续使用AccessKey

  • 如果选择的是该选项,我们创建的是阿里云账号的AccessKey,是具有账户的完全权限,有了这个AccessKey以后,我们就可以通过API调用阿里云的服务,不仅是短信服务,其他服务(OSS,语音服务,内容安全服务,视频点播服务…等)也可以调用。 相对来说,并不安全,当前的AccessKey泄露,会影响到我当前账户的其他云服务。

2). 开始使用子用户AccessKey

  • 可以创建一个子用户,这个子用户我们可以分配比较低的权限,比如仅分配短信发送的权限,不具备操作其他的服务的权限,即使这个AccessKey泄漏了,也不会影响其他的云服务, 相对安全。

1、创建子用户AccessKey

image-20230413203023151

  • 创建成功

image-20230413203410092

3.6、配置权限

image-20230413203739422

经过上述的权限配置之后,那么新创建的这个sms 用户,仅有短信服务操作的权限,不具备别的权限,即使当前的AccessKey泄漏了,也只会影响短信服务,其他服务是不受影响的。

3.7、禁用/删除AccessKey

如果在使用的过程中 AccessKey 不小心泄漏了,我们可以在阿里云控制台中, 禁用或者删除该AccessKey。

image-20230413204047920

然后再创建一个新的AccessKey, 保存好AccessKeyId和AccessKeySecret。

注意: 创建好了AccessKey后,请及时保存AccessKeyId 和 AccessKeySecret ,弹窗关闭后将无法再次获取该信息,但您可以随时创建新的 AccessKey。

3.8、代码开发

官方文档: https://help.aliyun.com/product/44282.html?spm=5176.12212571.help.dexternal.57a91cbewHHjKq

image-20230413204619122

  • 导入依赖
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>2.1.0</version>
</dependency>
  • 随机生成验证码工具类
public class ValidateCodeUtils {
    /**
     * 随机生成验证码
     * @param length 长度为4位或者6位
     * @return
     */
    public static Integer generateValidateCode(int length){
        Integer code =null;
        if(length == 4){
            // 生成随机数,最大为9999
            code = new Random().nextInt(9999);
            if(code < 1000){
                // 保证随机数为4位数字
                code = code + 1000;
            }
        }else if(length == 6){
            // 生成随机数,最大为999999
            code = new Random().nextInt(999999);
            if(code < 100000){
                // 保证随机数为6位数字
                code = code + 100000;
            }
        }else{
            throw new RuntimeException("只能生成4位或6位数字验证码");
        }
        return code;
    }

    /**
     * 随机生成指定长度字符串验证码
     * @param length 长度
     * @return
     */
    public static String generateValidateCode4String(int length){
        Random rdm = new Random();
        String hash1 = Integer.toHexString(rdm.nextInt());
        String capstr = hash1.substring(0, length);
        return capstr;
    }
}
  • 发送短信工具类
public class SMSUtils {

    // 签名名称
    private static final String SIGN = "阿里云短信测试";
    // 模板CODE
    private static final String TEMPLATE_CODE = "SMS_154950909";

    public static void main(String[] args) {
        sendMessage(SIGN,
                TEMPLATE_CODE,
                "接收短信的手机号",
                // 验证码
                String.valueOf(ValidateCodeUtils.generateValidateCode(6)));
    }

    /**
     * 发送短信
     *
     * @param signName     签名(就是短信前面【xxx】)
     * @param templateCode 模板(就是模板内容)
     * @param phoneNumbers 手机号
     * @param param        参数
     */
    public static void sendMessage(String signName, String templateCode, String phoneNumbers, String param) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "AccessKey Id", "AccessKey Secret");
        IAcsClient client = new DefaultAcsClient(profile);

        SendSmsRequest request = new SendSmsRequest();
        request.setSysRegionId("cn-hangzhou");
        request.setPhoneNumbers(phoneNumbers);
        request.setSignName(signName);
        request.setTemplateCode(templateCode);
        request.setTemplateParam("{\"code\":\"" + param + "\"}");
        try {
            SendSmsResponse response = client.getAcsResponse(request);
            System.out.println("短信发送成功");
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用阿里云短信服务在Django中发送短信,需要先注册阿里云账号并开通短信服务。然后按照以下步骤进行操作: 1. 安装阿里云Python SDK。 2. 在Django项目的settings.py文件中添加以下配置: ``` ALIYUN_ACCESS_KEY_ID = '<AccessKeyId>' ALIYUN_ACCESS_KEY_SECRET = '<AccessKeySecret>' ALIYUN_SMS_SIGN_NAME = '<短信签名>' ALIYUN_SMS_TEMPLATE_CODE = '<短信模板编号>' ``` 其中,<AccessKeyId>和<AccessKeySecret>是阿里云提供的访问密钥,<短信签名>和<短信模板编号>是需要提前创建的。 3. 创建一个发送短信的函数,如下所示: ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest def send_sms(phone_numbers, template_param): client = AcsClient(ALIYUN_ACCESS_KEY_ID, ALIYUN_ACCESS_KEY_SECRET, 'cn-hangzhou') request = CommonRequest() request.set_method('POST') request.set_domain('dysmsapi.aliyuncs.com') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phone_numbers) request.add_query_param('SignName', ALIYUN_SMS_SIGN_NAME) request.add_query_param('TemplateCode', ALIYUN_SMS_TEMPLATE_CODE) request.add_query_param('TemplateParam', template_param) response = client.do_action(request) return response ``` 其中,phone_numbers是接收短信的手机号码,template_param是短信模板中需要替换的参数。 4. 在需要发送短信的地方调用send_sms函数即可。 注意:使用阿里云短信服务需要按照相关规定使用,不能发送垃圾短信或违法信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_koen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值