阿里云短信服务开通

这篇具有很好参考价值的文章主要介绍了阿里云短信服务开通。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、阿里云短信服务开通

1.阿里云短信说明

https://dysms.console.aliyun.com/overview

登录访问阿里云短信服务,可以看到大致的操作步骤:

1.申请签名,如:【阿里云短信】

2.申请模板,如:【阿里云通信】您正在使用阿里云短信测试服务,体验验证码是:8888,如非本人操作,请忽略本短信!

3.系统设置,状态报告,审核通知,上行消息接收等

4.发送短信

阿里云提供了验证码的发送测试,我们可以通过测试发送短信到手机上查看效果。

通过下图我们可以看到阿里云发送消息分为国内消息和国际/港澳台消息两个类型,两者都需要单独申请签名模板才能发送。本文已国内消息下发为例,国际消息同理。

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

APIDemo

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

2.接入阿里云短信

2.1RAM访问控制添加用户

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

AccessKey和子用户AccessKey的区别在于AccessKey账户具备所有权限而子用户AccessKey需要手动添加。

这里我选择的是子账户进入之后添加新增用户如下,我们创建这个账户后续通过接口的方式调用阿里短信服务发送短信,所以这里一定要勾选OpenApI通用访问。

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

添加账户成功之后我们需要给子账户分配权限,授权:AliyunDysmsFullAccess

开通账户之后,一定要记录下AccessKeyId, AccessKeySecret便于后续使用

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

3.开通短信服务

3.1、开通

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

3.2、添加签名

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

3.3、添加模板

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

3.4、套餐

free.aliyun.com 提供了免费试用的服务,如果只是平时学习测试的化,可以通过该网站申请免费试用

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

3.5快速学习

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

4.测试短信发送

https://next.api.aliyun.com/api/Dysmsapi/2017-05-25/SendSms?params=%7B%22RegionId%22%3A%22cn-hangzhou%22%2C%22PhoneNumbers%22%3A%2215023501990%22%2C%22SignName%22%3A%22%22%2C%22TemplateCode%22%3A%22%22%7D&sdkStyle=old

4.1、查找使用示例

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

4.2、测试短信发送

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

4.3、查看发送结果

短信服务->业务统计->发送记录查询

二、阿里云短信服务开发

在日常开发中短信服务主要应用于用户验证码获取、已经消息通知等业务。这里已用户通过手机号获取验证码注册账号为例。

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

验证码获取业务流程

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

1.基础配置

  <!--阿里云短信-->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
    </dependency>

#阿里云短信
aliyun:
  sms:
    region-id: cn-hangzhou
    key-id: 你的appId
    key-secret: 你的appkey
    template-code: 你的模板id
    sign-name: 你的签名

1.这里配置类实现InitializingBean接口实现afterPropertiesSet方法,当Spring容器将regionId、keyId、keySecret等参数赋值之后,程序会调用afterPropertiesSet方法我们可以将配置的值赋值给常量,这样我们就可以通过类名.常量名去获取值了。

2.通过下面的配置我们在application.yml就可以提示我们配置类自己定义的变量,这样我们可以先定义配置类在写application.yml中的配置

配置类

@Data
@Component
@ConfigurationProperties(value = "aliyun.sms")
public class SmsProperties implements InitializingBean {

    private String regionId;
    private String keyId;
    private String keySecret;
    private String templateCode;
    private String signName;

    public static String REGION_Id;
    public static String KEY_ID;
    public static String KEY_SECRET;
    public static String TEMPLATE_CODE;
    public static String SIGN_NAME;

    //当私有成员被赋值后,此方法自动被调用,从而初始化常量
    @Override
    public void afterPropertiesSet() throws Exception {
        REGION_Id = regionId;
        KEY_ID = keyId;
        KEY_SECRET = keySecret;
        TEMPLATE_CODE = templateCode;
        SIGN_NAME = signName;
    }
}

Idea报告如下错误信息(不影响程序的编译和运行):

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

解决方案参考文档:

阿里云短信appid在哪里,第三方,阿里云,云计算,大数据

controller层

    @ApiOperation("获取验证码")
    @GetMapping("/send/{mobile}")
    public R send(@ApiParam(value = "手机号码", required = true)
                  @PathVariable String mobile) {
        //手机号码不能为空
        Assert.notEmpty(mobile, ResponseEnum.MOBILE_NULL_ERROR);
        //手机号码是否合法
        Assert.isTrue(RegexValidateUtils.checkCellphone(mobile), ResponseEnum.MOBILE_ERROR);
        //手机号是否被注册过
        boolean result = coreUserInfoClient.checkMobile(mobile);
        Assert.isTrue(result==false,ResponseEnum.MOBILE_EXIST_ERROR);

        //生成验证码
        Map<String, Object> map = new HashMap<>();
        String code = RandomUtils.getFourBitRandom();
        log.info("验证码:{}",code);
        map.put("code", code);

        //发送阿里云短信验证码
        smsService.send(mobile, SmsProperties.TEMPLATE_CODE,map);
        //发送短信验证码
//        rlySmsService.send(mobile, RLYSmsProperties.TEMPLATE_ID, map);

        //将验证码存入redis中
        redisTemplate.opsForValue().set("srb:mms:code:" + mobile, code);
        return R.ok().message("获取验证码成功").data("code",code);
    }

service层

发送短信的代码基本基本从demo中拷贝出来,我们只需要定义短信模板中的几个变量就可以了。文章来源地址https://www.toymoban.com/news/detail-781916.html

 @Override
    public void send(String mobile, String templateCode, Map<String, Object> param) {

        //创建远程连接客户端对象
        DefaultProfile profile = DefaultProfile.getProfile(
                SmsProperties.REGION_Id,
                SmsProperties.KEY_ID,
                SmsProperties.KEY_SECRET);
        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", SmsProperties.REGION_Id);
        request.putQueryParameter("PhoneNumbers", mobile);
        request.putQueryParameter("SignName", SmsProperties.SIGN_NAME);
        request.putQueryParameter("TemplateCode", templateCode);

        Gson gson = new Gson();
        String json = gson.toJson(param);
        request.putQueryParameter("TemplateParam", json);

        try {
            //使用客户端对象携带请求对象发送请求并得到响应结果
            CommonResponse response = client.getCommonResponse(request);
            boolean success = response.getHttpResponse().isSuccess();
            //ALIYUN_RESPONSE_FAIL(-501, "阿里云响应失败"),
            Assert.isTrue(success, ResponseEnum.ALIYUN_RESPONSE_FAIL);

            String data = response.getData();
            HashMap<String, String> resultMap = gson.fromJson(data, HashMap.class);
            String code = resultMap.get("Code");
            String message = resultMap.get("Message");
            log.info("阿里云短信发送响应结果:");
            log.info("code:" + code);
            log.info("message:" + message);

            //ALIYUN_SMS_LIMIT_CONTROL_ERROR(-502, "短信发送过于频繁"),//业务限流
            Assert.notEquals("isv.BUSINESS_LIMIT_CONTROL", code, ResponseEnum.ALIYUN_SMS_LIMIT_CONTROL_ERROR);
            //ALIYUN_SMS_ERROR(-503, "短信发送失败"),//其他失败
            Assert.equals("OK", code, ResponseEnum.ALIYUN_SMS_ERROR);

        } catch (ServerException e) {
            log.error("阿里云短信发送SDK调用失败:");
            log.error("ErrorCode=" + e.getErrCode());
            log.error("ErrorMessage=" + e.getErrMsg());
            throw new BusinessException(ResponseEnum.ALIYUN_SMS_ERROR, e);
        } catch (ClientException e) {
            log.error("阿里云短信发送SDK调用失败:");
            log.error("ErrorCode=" + e.getErrCode());
            log.error("ErrorMessage=" + e.getErrMsg());
            throw new BusinessException(ResponseEnum.ALIYUN_SMS_ERROR, e);
        }
    }

2. 4-6位随机生成工具类

/**
 * 生成四位和六位的随机数字
 */
public class RandomUtils {

	private static final Random random = new Random();

	private static final DecimalFormat fourdf = new DecimalFormat("0000");

	private static final DecimalFormat sixdf = new DecimalFormat("000000");

	public static String getFourBitRandom() {
		return fourdf.format(random.nextInt(10000));
	}

	public static String getSixBitRandom() {
		return sixdf.format(random.nextInt(1000000));
	}

	/**
	 * 给定数组,抽取n个数据
	 * @param list
	 * @param n
	 * @return
	 */
	public static ArrayList getRandom(List list, int n) {

		Random random = new Random();

		HashMap<Object, Object> hashMap = new HashMap<Object, Object>();

		// 生成随机数字并存入HashMap
		for (int i = 0; i < list.size(); i++) {

			int number = random.nextInt(100) + 1;

			hashMap.put(number, i);
		}

		// 从HashMap导入数组
		Object[] robjs = hashMap.values().toArray();

		ArrayList r = new ArrayList();

		// 遍历数组并打印数据
		for (int i = 0; i < n; i++) {
			r.add(list.get((int) robjs[i]));
			System.out.print(list.get((int) robjs[i]) + "\t");
		}
		System.out.print("\n");
		return r;
	}
}

到了这里,关于阿里云短信服务开通的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云短信服务不对个人开放?如何在阿里云市场免费购买短信服务?云市场购买到的短信服务如何使用?(以谷粒学院项目为例)

    问题描述 : 在做谷粒学院项目时,需要使用阿里云的短信服务用于注册验证,但是阿里云的短信服务目前不对个人开放了,看到弹幕说可以在云市场购买,于是果断尝试了一把,这过程中又遇到头疼的依赖版本兼容问题,好在最终解决并测试成功了。在此把详细的操作流程

    2024年02月12日
    浏览(49)
  • 阿里云短信服务实战教程

      短信服务有很多的使用场景,比如注册获取验证码,购票成功发送购票通知。目前很多头部运营商已经提供了相关服务,比如阿里云,腾讯云等,这里以阿里云短信服务为例。   阿里云的短信服务是需要购买的,并且每条短信是计费的这个可以在阿里云看到,都有详细

    2024年02月11日
    浏览(47)
  • Sms多平台短信服务商系统~完成阿里云短信服务发送可自行配置

    阿里云地址 不同编程语言都有对应的SDK,你们下载自己需要的即可。 pom.xml中添加maven坐标 接下来的代码不是单纯的使用短信服务商提供的发送代码来完成短信的发送那样子就太简单了,我想你们也不想看这样的文章了CSDN一抓一大把,或者看官方文档即可。为了通用短信服务

    2024年02月09日
    浏览(58)
  • 阿里云短信服务---测试模板实现

    2023年阿里云短信服务 个人申请模板 已经申请不到了,现在使用 测试模板 实现 发送短信功能 但你手机上接收到的是模板字符串,具体验证码可以自行存到Redis或者输出到控制台 步骤: 平台链接: https://dysms.console.aliyun.com/quickstart 依次点击下面图片的提示 设置测试模板参数

    2024年02月14日
    浏览(54)
  • 阿里云——OpenAPI使用——短信服务

    目录 前言 产品位置 短信服务 API发送测试 控制台发送测试 链接地址: 阿里云 OpenAPI 开发者门户 公司一直没用这个,最近搞Eolink的时候看到OpenAPI,为了测试,我就搞一下阿里的试试,操作过程还是挺方便的,变相的产品华为、腾讯都有,阿里的操作的流畅度最高。步骤最简

    2023年04月20日
    浏览(43)
  • (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮。 注册成功后,点击登录按钮进行登录。登录后进入短信服务管理页面,选择国内消息菜单: 短信签名是短信发送者的署名,表示发送方的身份。 切换到【模板管理】标签页: 短信模板包含短信发送内容、场景、变量信息

    2024年02月02日
    浏览(56)
  • 阿里云短信服务API怎么调用

            今天来搞一下阿里云短信服务来实现发送短信功能,其实能提供短信发送服务的平台有很多,但这里我选择的是阿里云,因为阿里云的示例还有代码封装的很简洁,使用起来非常简单,上手非常快,那么费话不多说我们直接开始。         首先,我们需要登录阿里云

    2024年02月02日
    浏览(44)
  • 尚医通-阿里云短信服务(二十九)

    目录: (1)前台用户系统-手机登录-阿里云短信服务介绍 (2)手机登录-整合短信服务 (3)整合短信发送服务测试 (1)前台用户系统-手机登录-阿里云短信服务介绍 现在使用阿里云完成短信服务:注册登录阿里云网站: 在产品中找短信服务:  或者搜索短信服务:   需要

    2024年02月02日
    浏览(40)
  • 尚融宝15-集成阿里云短信服务

    目录 一、前言 二、测试短信发送 1、查找使用示例 2、测试短信发送 ​编辑 三、使用RAM子用户 1、进入子用户管理页面 2、添加用户  3、获取子用户key 4、设置用户权限 四、短信使用场景和流程 五、创建短信微服务 1、创建项目 2、自定义配置 3、发送短信 在阿里云的短信服

    2023年04月15日
    浏览(65)
  • java使用阿里云的短信服务

    这里我已经购买过一次了,所以10块钱200条一年,第一次购买应该是3块钱200条三个月 发送成功 要使用阿里云的业务,这个 AccessKey ID和AccessKey Secret 是必须要获取的

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包