1.先去开通阿里云的短信服务
先去阿里云官网搜索短信服务,如下图所示
2.进入到短信服务的管理控制台
2.1 添加签名
2.2 添加模板
3.开始写代码(我这里写的是java)
3.1 先引入依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.1</version>
</dependency>
3.2 SendSms类(短信发送类)
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import java.util.Random;
import java.security.SecureRandom;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SendSms {
private static final String SYMBOLS = "0123456789"; // 数字
private static final Random RANDOM = new SecureRandom();
//该函数是用来生成随机的验证码的函数
public static String getNonce_str() {
// 如果需要4位,那 new char[4] 即可,其他位数同理可得
char[] nonceChars = new char[6];
for (int index = 0; index < nonceChars.length; ++index) {
nonceChars[index] = SYMBOLS.charAt(RANDOM.nextInt(SYMBOLS.length()));
}
return new String(nonceChars);
}
/*
* @param tel 发送的手机号码
* @param code 验证码
*/
public static void sendMessage(String tel,String code) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "你的AccessKeyId", "你的 AccessKeySecret");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
//这里的ID以杭州为例
request.putQueryParameter("RegionId", "cn-hangzhou");
//tel为发送的手机号
request.putQueryParameter("PhoneNumbers", tel);
//这里的SignName是你刚刚申请的签名名称
request.putQueryParameter("SignName", "签名名称");
//TemplateCode是你申请的模板的模板代码,即模版CODE
request.putQueryParameter("TemplateCode", "模版CODE");
/**
* 这里是指你模板里面的参数
* 我的模板是:您的验证码:${code},您正进行身份验证,打死不告诉别人!
* 所以的参数只有一个code,这里的验证码的参数是由你自己生成发送的,而不是阿里云发送完再返回给你的
**/
request.putQueryParameter("TemplateParam", "{\"code\":\""+code+"\"}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
/**
* @param phone 手机号码
* 确认手机号码有没有正确的符合格式
*/
public static void checkPhoneNumbers(String phone){
//手机号码的正则表达式
String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
if(phone.length() != 11){
//这里的代码可以自行修改写
System.out.println("手机号应为11位数");
}else{
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(phone);
boolean isMatch = m.matches();
if(! isMatch){
//这里的代码可以自行修改写
System.out.println("您的手机号" + phone + "是错误格式!!!");
}
}
}
}
4. 基本上用我上面的代码就可以直接发送短信了,如果不想用,想自己搭配,也可以直接登录到阿里云的,OpenAPI Explorer来自己调试
4.1 OpenAPI Explorer网址:https://api.aliyun.com/?spm=a2c4g.11186623.2.17.195e60e2IgYxpF#/?product=Dysmsapi&lang=JAVA
这个 OpenAPI Explorer的页面如下:
你只要在左侧选择函数,然后在中间的框里填入参数,右边上方选择语言,那么右边下方里的代码就会根据你选择的函数、参数以及语言生成你需要的类。
具体函数的作用和参数可以自己去看阿里云的API。