当前位置:网站首页>阿里云发送短信验证码
阿里云发送短信验证码
2022-07-05 09:02:00 【我要用代码向我喜欢的女孩表白】
3.阿里云发送短信验证码
依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.10</version>
</dependency>
代码(复制即用)
添加自己的id和secret后即可
package com.example.etf.story.service;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.tea.*;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teautil.models.*;
import java.util.Random;
public class AliSMS {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
// 您的 AccessKey ID
.setAccessKeyId("ss")
// 您的 AccessKey Secret
.setAccessKeySecret("xxx");
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
//生成随机数
/**
*
* @param strSource//加字母和随机数装入集合,原始随机字符串,可自己定义
* @param num //生成几位的验证码,可自己定义
* @return
*/
public static String suijiNum(String strSource,int num){
Random random = new Random();
int maxLength=strSource.length()-1;//随机的索引最大程度,因为索引从0开始,所以最大值的索引 是长度-1
String[] strSources = strSource.split("");//切分字符串为可选的字符数组,用于索引选取
//最终的验证码进行拼接,stringBuffer只创建一个对象节省内存,并且速度快,这个场景不需要线程安全
StringBuffer appendStrEnd = new StringBuffer();
for (int i = 0; i < num; i++) {
int suijiIndex = random.nextInt(maxLength);//生成索引,索引位你的原始字符串中的一个字符的位置
String strAlone = strSources[suijiIndex];//获取字符串中的单个字符值
appendStrEnd.append(strAlone);
}
return appendStrEnd.toString();
}
public static void SendSMSByAli(String phone,String code) throws Exception {
com.aliyun.dysmsapi20170525.Client client = AliSMS.createClient("accessKeyId", "accessKeySecret");
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(phone)
.setSignName("learning呀朋友")//签名名称【注意别写成模板名称】
.setTemplateCode("SMS_243991108")//模板id
.setTemplateParam("{\"code\":\""+code+"\"}");
RuntimeOptions runtime = new RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.sendSmsWithOptions(sendSmsRequest, runtime);
} catch (TeaException error) {
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
边栏推荐
- C [essential skills] use of configurationmanager class (use of file app.config)
- Halcon snap, get the area and position of coins
- C# LINQ源码分析之Count
- RT-Thread内核快速入门,内核实现与应用开发学习随笔记
- C#【必备技能篇】ConfigurationManager 类的使用(文件App.config的使用)
- 皮尔森相关系数
- notepad++
- 生成对抗网络
- Nodemon installation and use
- [Niuke brush questions day4] jz55 depth of binary tree
猜你喜欢
TF coordinate transformation of common components of ros-9 ROS
Generate confrontation network
Halcon Chinese character recognition
RT-Thread内核快速入门,内核实现与应用开发学习随笔记
Confusing basic concepts member variables local variables global variables
[technical school] spatial accuracy of binocular stereo vision system: accurate quantitative analysis
Solutions of ordinary differential equations (2) examples
Attention is all you need
深度学习模型与湿实验的结合,有望用于代谢通量分析
[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation
随机推荐
Rebuild my 3D world [open source] [serialization-1]
编辑器-vi、vim的使用
Halcon snap, get the area and position of coins
RT-Thread内核快速入门,内核实现与应用开发学习随笔记
我从技术到产品经理的几点体会
ROS learning 1- create workspaces and function packs
Task failed task_ 1641530057069_ 0002_ m_ 000000
C#【必备技能篇】ConfigurationManager 类的使用(文件App.config的使用)
Jenkins pipeline method (function) definition and call
Generate confrontation network
Blue Bridge Cup provincial match simulation question 9 (MST)
fs. Path module
Halcon clolor_ pieces. Hedv: classifier_ Color recognition
JS asynchronous error handling
3D reconstruction open source code summary [keep updated]
迁移学习和域自适应
Halcon shape_ trans
多元线性回归(梯度下降法)
kubeadm系列-02-kubelet的配置和启动
Pearson correlation coefficient