要发送短信,我们需要第三方提供的短信接口,这里我使用阿里云的短信服务。
首先进入阿里云的官网,然后注册。登陆之后选择云通信——》短信服务
然后点击免费开通。
开通后进入控制中心,选择右上方的支持与服务,选择帮助与文档
接着选择云通信,短信服务
然后就进入到官方提供的文档教程了,写得很详细,可以自己参考对接短信接口。
我的操作步骤如下:
进入之后先开通RAM访问控制,然后点击人员管理——》用户——》新建用户
填写名称,由于我用Eclipse编写Java代码发送,所以我选择编程访问,点击确定。
(注意:此后会弹出对话框,写有相关信息,不要忙着关闭,一定要记住自己的AccessKey ID和AccessKeySecret,因为关闭后将无法通过任何途径查看这两个信息。也不要泄露这些信息。详情见官方文档)
接着给用户添加权限
然后就是添加短信签名,进入控制台
填写签名,选择验证码,之后提交,待审核通过(不通过的话,删除之后再添加)
签名审核通过之后,再添加短信模板,提交等待审核即可
至此,申请流程已经差不多了,接下来就是写代码了,也可以使用官方提供的demo。(推荐使用新版)
如果不用maven的话需要两个jar包,其中官方提供了一个,还有一个需要自己下载
先来下载官方提供的
另一个jar包下载地址
https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5
当然,发送短信是要收费的,不过有个活动,新人可以免费使用。活动地址
找到短信服务,如果没有企业的话,选择个人专享,0元开通。(可以免费发送100条短信,详情见官方说明)
如果想了解更多的话,建议查看官方文档,写得很详细
下面是我直接复制的官方demo,能在eclipse中运行,导入刚才下载的2个jar包即可。
package sendPhoneMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
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;
public class QuerySendDetails {
//自己的AccessKey ID(不要泄露)
static final String accessKeyId = "";
//自己的AccessKeySecret(不要泄露)
static final String accessKeySecret = "";
//接收验证码的手机号
static final String tlephone = "";
//签名名称
static final String signName = "";
//短信模板ID。请在控制台模板管理页面模板CODE一列查看。
static final String templateCode = "";
/**
* 生成四位随机数验证码
* @return
*/
static String setRandomNumber() {
return Integer.toString(((int)(Math.random()*9000+1000)));
}
public static void main(String[] args) {
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");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", tlephone);
request.putQueryParameter("SignName", signName);
request.putQueryParameter("TemplateCode", templateCode);
request.putQueryParameter("TemplateParam", "{\"code\":\""+setRandomNumber()+"\"}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
参数说明:
accessKeyId 和 accessKeySecret
刚刚新建用户时记住的AccessKey ID和AccessKeySecret
signName
templateCode
短信模板ID。请在控制台模板管理页面模板CODE一列查看。