前言
最近项目中需要知道前一天数据同步进度,需要使用发送短信,首先考虑阿里云的,一个是API比较详细, 使用的人比较多 出现问题也好查询到办法!!!
第一步
(具体可以参考阿里官网阿里短信发送API)
- 获取阿里云的Access Key ID和Access Key Secret
- 创建短信模板 配置短信接口
第二步 添加pom文件内容
<!--阿里大鱼-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.7.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
第三步 ALiDaYuMessageUtil 短信发送工具类
public class ALiDaYuMessageUtil {
private static final Logger Log = LoggerFactory.getLogger(ALiDaYuMessageUtil.class);
//产品名称:云通信短信API产品,开发者无需替换
static final String product = "*********";
//产品域名,开发者无需替换
static final String domain = "**.aliyuncs.com";
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = "*********";
static final String accessKeySecret = "*********";
public static boolean sendVarifyMessage(String mobile, String code) {
Log.info("ready to sendMsg to {} with verify code : {}", mobile, code);
try {
//初始化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(mobile);
//必填:短信签名-可在短信控制台中找到
request.setSignName("****");
//必填:短信模板-可在短信控制台中找到
String msg = "{\"code\":\"" + code + "\",\"product\":\"****\"}";
request.setTemplateParam(msg);
request.setTemplateCode("SMS_***");
//request.setTemplateCode("SMS_***");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
//request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
//request.setOutId("yourOutId");
//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if (sendSmsResponse.getCode().equals("OK")) {
return true;
} else {
return false;
}
} catch (Exception e) {
Log.info("发送短信失败", e);
}
return false;
}
public static void main(String[] args) {
// 生成验证码
String captcha = "模板里的内容";
Boolean flag = sendVarifyMessage("17771613693",captcha);
System.out.println(flag);
}
}
第四步 运行代码测试
控制台输出
09:40:40.501 [main] INFO com.util.ALiDaYuMessageUtil - ready to sendMsg to 电话号码 with verify code : 模板里的内容
true
Process finished with exit code 0