当前位置:   article > 正文

2022如何使用个人阿里云短信服务?_阿里云短信签名没有备案域名如何通过

阿里云短信签名没有备案域名如何通过

84fd6b3806ca420a9962f767b39edd11.png

 点击登录阿里云短信服务控制台--->点击  添加签名 

这里需要注意的时,因为现在阿里云管控的比较严格!!!要求申请之前必须有已经注册备案过的域名网站在使用!!!如果没有,就没必要往下面看了。

 

 点击进来以后,按照要求填写:因为一个账号只能选购一种,所以我这里就没法仔细演示了。

d9a1d21334b74c89a197e84288992a01.png

 添加完成之后,等待审核!!!!一般2个小时就会出来审核结果了,这里我因为注册申请时填写规则有误,足足审核了7次才通过!!!!!

 

二:模板管理

 

 点击添加模板:

7c635996f0e6418dabb50b618b4a6fb6.png

 19ac848ca48f4f5296d9b6ae9fa664a4.png

 然后点击添加即可,一把2-3个小时就可以申请出结果了。

三:获取用户AccessKey

 

点击 继续使用AccessKeyd442c0cc3b094b01a81f97bd5bbecef0.png

 点击完成之后,点击图片中的创建AccessKey 将生成的  AccessKey  保存下来!

四:在项目代码中引入阿里云依赖, 根据你需要的版本不同,自己引入。我这里引入的可以作为参考

1:修配置文件

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.aliyun</groupId>
  4. <artifactId>aliyun-java-sdk-core</artifactId>
  5. </dependency>
  6. </dependencies>

2、添加配置文件application.properties  将下面的服务地址改为自己对应的地址

  1. # 服务端口
  2. server.port=8204
  3. # 服务名
  4. spring.application.name=service-msm
  5. #返回json的全局时间格式
  6. spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
  7. spring.jackson.time-zone=GMT+8
  8. spring.redis.host=192.168.44.165
  9. spring.redis.port=6379
  10. spring.redis.database= 0
  11. spring.redis.timeout=1800000
  12. spring.redis.lettuce.pool.max-active=20
  13. spring.redis.lettuce.pool.max-wait=-1
  14. #最大阻塞等待时间(负数表示没限制)
  15. spring.redis.lettuce.pool.max-idle=5
  16. spring.redis.lettuce.pool.min-idle=0
  17. # nacos服务地址
  18. spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  19. aliyun.sms.regionId=default
  20. aliyun.sms.accessKeyId=LT6I0Y5633pX89qC
  21. aliyun.sms.secret=jX8D04Dm12I3gGKj345FYSzu0fq8mT

 3:创建一个SpringBoot  启动类

  1. @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
  2. @EnableDiscoveryClient
  3. public class ServiceMsmApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(ServiceMsmApplication.class, args);
  6. }
  7. }
  8. /因为没有在配置文件中配置数据库的信息,害怕报错,所以取消数据源自动自动配置

4:添加一个配置工具类类

  1. @Component
  2. public class ConstantPropertiesUtils implements InitializingBean {
  3. //InitializingBean 初始化bean 让spring 容器一初始化就加载
  4. @Value("${aliyun.sms.regionId}")
  5. private String regionId;
  6. @Value("${aliyun.sms.accessKeyId}")
  7. private String accessKeyId;
  8. @Value("${aliyun.sms.secret}")
  9. private String secret;
  10. public static String REGION_Id;
  11. public static String ACCESS_KEY_ID;
  12. public static String SECRECT;
  13. @Override
  14. public void afterPropertiesSet() throws Exception {
  15. REGION_Id=regionId;
  16. ACCESS_KEY_ID=accessKeyId;
  17. SECRECT=secret;
  18. }
  19. }

在项目中编写:

73cec018956b46a08c347965f18f4740.png

 

MsmApiController:
  1. package com.hospital.controller;
  2. import com.hospital.common.result.Result;
  3. import com.hospital.service.MsmService;
  4. import com.hospital.utils.RandomUtil;
  5. import io.swagger.annotations.ApiOperation;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.data.redis.core.RedisTemplate;
  8. import org.springframework.util.StringUtils;
  9. import org.springframework.web.bind.annotation.GetMapping;
  10. import org.springframework.web.bind.annotation.PathVariable;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import java.util.concurrent.TimeUnit;
  14. @RestController
  15. @RequestMapping("/api/msm")
  16. @SuppressWarnings("ALL")
  17. public class MsmApiController {
  18. @Autowired
  19. private MsmService msmService;
  20. @Autowired
  21. private RedisTemplate<String,String> redisTemplate;
  22. //将手机验证码存放到redis 中,并设置过期时间
  23. @ApiOperation(value = "发送手机验证码")
  24. @GetMapping("send/{phone}")
  25. public Result sendCode(@PathVariable(required = true) String phone){
  26. // phone 作为redis 中的key, code 作为redis 中的value值
  27. String code = redisTemplate.opsForValue().get(phone);
  28. if (!StringUtils.isEmpty(code)) {
  29. //这里为什么从redis 拿取 验证码 我理解的是 ,因为redis 验证码我们给他设置了时间限制,所以在规定时间内,验证码
  30. //可以多次使用,一旦时间到期之后,我们就需要从新生成6位数的验证码了。
  31. return Result.ok();
  32. }
  33. //生成六位验证码
  34. code = RandomUtil.getSixBitRandom();
  35. //调用service 方法,整合阿里云短信服务进行发送
  36. Boolean isSend = msmService.send(phone,code);
  37. //返回的Boolean 值进行判断 ,如果发送信息成功,即存入到redis 中,如果没有则提示验证码发送失败
  38. if (isSend) {
  39. //放到redis中规定时间内有效
  40. redisTemplate.opsForValue().set(phone,code,2, TimeUnit.MINUTES);
  41. return Result.ok();
  42. } else {
  43. return Result.fail().message("发送短信失败!请重新发送");
  44. }
  45. }
  46. }
MsmService
  1. @Service
  2. public interface MsmService {
  3. Boolean send(String phone, String code);
  4. }
MsmServiceImpl
  1. package com.hospital.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.aliyuncs.CommonRequest;
  4. import com.aliyuncs.CommonResponse;
  5. import com.aliyuncs.DefaultAcsClient;
  6. import com.aliyuncs.IAcsClient;
  7. import com.aliyuncs.exceptions.ClientException;
  8. import com.aliyuncs.exceptions.ServerException;
  9. import com.aliyuncs.http.MethodType;
  10. import com.aliyuncs.profile.DefaultProfile;
  11. import com.hospital.service.MsmService;
  12. import com.hospital.utils.ConstantPropertiesUtils;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.util.StringUtils;
  15. import java.util.HashMap;
  16. import java.util.Map;
  17. @Service
  18. public class MsmServiceImpl implements MsmService {
  19. //根据手机号,存入验证码
  20. @Override
  21. public Boolean send(String phone, String code) {
  22. //判断手机号是否为空
  23. if (StringUtils.isEmpty(phone)) {
  24. return false;
  25. }
  26. //整合阿里云的短信服务
  27. DefaultProfile profile = DefaultProfile.
  28. getProfile(ConstantPropertiesUtils.REGION_Id,
  29. ConstantPropertiesUtils.ACCESS_KEY_ID,
  30. ConstantPropertiesUtils.SECRECT);
  31. IAcsClient client = new DefaultAcsClient(profile);
  32. CommonRequest request = new CommonRequest();
  33. //request.setProtocol(ProtocolType.HTTPS);
  34. request.setMethod(MethodType.POST);
  35. request.setDomain("dysmsapi.aliyuncs.com");
  36. request.setVersion("2017-05-25");
  37. request.setAction("SendSms");
  38. // request.setSysAction();
  39. //手机号
  40. request.putQueryParameter("PhoneNumbers", phone);
  41. //签名名称
  42. request.putQueryParameter("SignName", "自己申请的短信签名");
  43. //模板code
  44. request.putQueryParameter("TemplateCode", "短信模板CODE");
  45. //验证码 使用json格式 {"code":"123456"}
  46. Map<String,Object> param = new HashMap();
  47. param.put("code",code);
  48. request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));
  49. //调用方法进行短信发送
  50. try {
  51. CommonResponse response = client.getCommonResponse(request);
  52. System.out.println(response.getData());
  53. return response.getHttpResponse().isSuccess();
  54. } catch (ServerException e) {
  55. e.printStackTrace();
  56. } catch (ClientException e) {
  57. e.printStackTrace();
  58. }
  59. return false;
  60. }
  61. }
ConstantPropertiesUtils  工具类
  1. @Component
  2. public class ConstantPropertiesUtils implements InitializingBean {
  3. //InitializingBean 初始化bean 让spring 容器一初始化就加载
  4. @Value("${aliyun.sms.regionId}")
  5. private String regionId;
  6. @Value("${aliyun.sms.accessKeyId}")
  7. private String accessKeyId;
  8. @Value("${aliyun.sms.secret}")
  9. private String secret;
  10. public static String REGION_Id;
  11. public static String ACCESS_KEY_ID;
  12. public static String SECRECT;
  13. @Override
  14. public void afterPropertiesSet() throws Exception {
  15. REGION_Id=regionId;
  16. ACCESS_KEY_ID=accessKeyId;
  17. SECRECT=secret;
  18. }
RandomUtil  工具类
  1. public class RandomUtil {
  2. private static final Random random = new Random();
  3. private static final DecimalFormat fourdf = new DecimalFormat("0000");
  4. private static final DecimalFormat sixdf = new DecimalFormat("000000");
  5. public static String getFourBitRandom() {
  6. return fourdf.format(random.nextInt(10000));
  7. }
  8. public static String getSixBitRandom() {
  9. return sixdf.format(random.nextInt(1000000));
  10. }
  11. /**
  12. * 给定数组,抽取n个数据
  13. * @param list
  14. * @param n
  15. * @return
  16. */
  17. public static ArrayList getRandom(List list, int n) {
  18. Random random = new Random();
  19. HashMap<Object, Object> hashMap = new HashMap<Object, Object>();
  20. // 生成随机数字并存入HashMap
  21. for (int i = 0; i < list.size(); i++) {
  22. int number = random.nextInt(100) + 1;
  23. hashMap.put(number, i);
  24. }
  25. // 从HashMap导入数组
  26. Object[] robjs = hashMap.values().toArray();
  27. ArrayList r = new ArrayList();
  28. // 遍历数组并打印数据
  29. for (int i = 0; i < n; i++) {
  30. r.add(list.get((int) robjs[i]));
  31. System.out.print(list.get((int) robjs[i]) + "\t");
  32. }
  33. System.out.print("\n");
  34. return r;
  35. }
  36. }

开启启动类调接口测试

  1. @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
  2. @EnableDiscoveryClient
  3. @ComponentScan(basePackages = {""})
  4. public class ServiceMsmApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(ServiceMsmApplication.class, args);
  7. }
  8. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/233137
推荐阅读
相关标签
  

闽ICP备14008679号