当前位置:网站首页>阿里云发送短信验证码
阿里云发送短信验证码
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);
}
}
}
边栏推荐
- TF coordinate transformation of common components of ros-9 ROS
- 特征工程
- scipy. misc. imread()
- It cold knowledge (updating ing~)
- Return of missing persons
- 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]
- 迁移学习和域自适应
- Rebuild my 3D world [open source] [serialization-3] [comparison between colmap and openmvg]
- 12. Dynamic link library, DLL
- Array,Date,String 对象方法
猜你喜欢

Applet (use of NPM package)

nodejs_ 01_ fs. readFile

优先级队列(堆)

RT thread kernel quick start, kernel implementation and application development learning with notes

Add discount recharge and discount shadow ticket plug-ins to the resource realization applet

Confusing basic concepts member variables local variables global variables

Codeworks round 639 (Div. 2) cute new problem solution

nodejs_ fs. writeFile

What is a firewall? Explanation of basic knowledge of firewall

我从技术到产品经理的几点体会
随机推荐
Introduction Guide to stereo vision (4): DLT direct linear transformation of camera calibration [recommended collection]
迁移学习和域自适应
Task failed task_ 1641530057069_ 0002_ m_ 000000
Nodemon installation and use
Return of missing persons
Solution to the problems of the 17th Zhejiang University City College Program Design Competition (synchronized competition)
Array,Date,String 对象方法
[technical school] spatial accuracy of binocular stereo vision system: accurate quantitative analysis
Huber Loss
Nodejs modularization
Summary of "reversal" problem in challenge Programming Competition
kubeadm系列-00-overview
Meta tag details
asp. Net (c)
Generate confrontation network
My experience from technology to product manager
IT冷知识(更新ing~)
MPSoC QSPI flash upgrade method
资源变现小程序添加折扣充值和折扣影票插件
The location search property gets the login user name