要发送短信,我们需要第三方提供的短信接口,这里我使用阿里云的短信服务。

首先进入阿里云的官网,然后注册。登陆之后选择云通信——》短信服务

java actor 发送消息 java如何实现发送短信_java


然后点击免费开通

java actor 发送消息 java如何实现发送短信_java_02


开通后进入控制中心,选择右上方的支持与服务,选择帮助与文档

java actor 发送消息 java如何实现发送短信_java_03


接着选择云通信短信服务

java actor 发送消息 java如何实现发送短信_java actor 发送消息_04


然后就进入到官方提供的文档教程了,写得很详细,可以自己参考对接短信接口。

我的操作步骤如下:

java actor 发送消息 java如何实现发送短信_jar包_05


java actor 发送消息 java如何实现发送短信_验证码_06


进入之后先开通RAM访问控制,然后点击人员管理——》用户——》新建用户

java actor 发送消息 java如何实现发送短信_验证码_07


填写名称,由于我用Eclipse编写Java代码发送,所以我选择编程访问,点击确定。

注意:此后会弹出对话框,写有相关信息,不要忙着关闭,一定要记住自己的AccessKey ID和AccessKeySecret,因为关闭后将无法通过任何途径查看这两个信息。也不要泄露这些信息。详情见官方文档

java actor 发送消息 java如何实现发送短信_jar包_08


接着给用户添加权限

java actor 发送消息 java如何实现发送短信_java actor 发送消息_09


然后就是添加短信签名,进入控制台

java actor 发送消息 java如何实现发送短信_java actor 发送消息_10


填写签名,选择验证码,之后提交,待审核通过(不通过的话,删除之后再添加)

java actor 发送消息 java如何实现发送短信_java actor 发送消息_11


签名审核通过之后,再添加短信模板,提交等待审核即可

java actor 发送消息 java如何实现发送短信_验证码_12


java actor 发送消息 java如何实现发送短信_java actor 发送消息_13


至此,申请流程已经差不多了,接下来就是写代码了,也可以使用官方提供的demo。(推荐使用新版)

java actor 发送消息 java如何实现发送短信_验证码_14


java actor 发送消息 java如何实现发送短信_验证码_15


如果不用maven的话需要两个jar包,其中官方提供了一个,还有一个需要自己下载

先来下载官方提供的

java actor 发送消息 java如何实现发送短信_java actor 发送消息_16


java actor 发送消息 java如何实现发送短信_java_17


另一个jar包下载地址

https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5

java actor 发送消息 java如何实现发送短信_java_18


当然,发送短信是要收费的,不过有个活动,新人可以免费使用。活动地址

找到短信服务,如果没有企业的话,选择个人专享,0元开通。(可以免费发送100条短信,详情见官方说明)

java actor 发送消息 java如何实现发送短信_java_19


如果想了解更多的话,建议查看官方文档,写得很详细

下面是我直接复制的官方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

java actor 发送消息 java如何实现发送短信_验证码_20

templateCode

短信模板ID。请在控制台模板管理页面模板CODE一列查看。


java actor 发送消息 java如何实现发送短信_jar包_21