发送短信,验证码
短信
注册阿里云的账号
开通短信服务
测试短信服务是否可用
导入jar
<!-- 短信相关 --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.0</version></dependency> <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>2.2.1</version></dependency>
工具类
package com.qfedu.microcommon.utils; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; /*** 发送短信工具类*/ public class AliSmsUtils {private static IAcsClient client;private static final String ACCESS_KEY_ID = "LTAI5tH9rLAqUXrcsdbsDtnk";private static final String ACCESS_KEY_SECRET = "H6TdeeWsLLwUP0NR7qO7nI3149ZILm"; static {DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, ACCESS_KEY_SECRET);client = new DefaultAcsClient(profile);} /*** 发送短信** @param signName* @param templateCode* @param phone* @param code* @return*/public static void sendSms(String signName, String templateCode, String phone, String code) { SendSmsRequest request = new SendSmsRequest();request.setSignName(signName);request.setTemplateCode(templateCode);request.setPhoneNumbers(phone);request.setTemplateParam("{\"code\":\"" + code + "\"}"); try {SendSmsResponse response = client.getAcsResponse(request);System.out.println(new Gson().toJson(response));} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {// 记录错误日志 System.out.println("ErrCode:" + e.getErrCode());System.out.println("ErrMsg:" + e.getErrMsg());System.out.println("RequestId:" + e.getRequestId());}} public static void main(String[] args) {AliSmsUtils.sendSms("阿里云短信测试","SMS_154950909", "13663840457", "9527");} }
发送验证码
@Overridepublic void sendCode(String phone) {// 判断手机号是否合法 // 判断手机号是否注册过 // 借助hutool的工具类,生成4位验证码String code = RandomUtil.randomNumbers(4); // 存储验证码 关键步骤// 存入redis , 考虑key和value // 发送验证码的短信,一般异步发送AliSmsUtils.sendSms(SmsEnum.SMS_LOGIN.getSignName(),SmsEnum.SMS_LOGIN.getTemplateCode(),phone,code); }