阿里云短信发送工具类 AliyunSmsUtil.java

依赖

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-core</artifactId>
	<version>4.1.0</version>
</dependency>
<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
	<version>2.1.0</version>
</dependency>

工具类

import java.util.HashMap;
import java.util.Map;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
 
 
public class AliyunSmsUtil {
	
    /**
     * 产品名称:云通信短信API产品
     */
    private static final String PRODUCT = "Dysmsapi";
 
    /**
     * 产品域名
     */
    private static final String DOMAIN = "dysmsapi.aliyuncs.com";
 
    /**
     * todo 开发者自己的AK(在阿里云访问控制台寻找)
     */
    private static final String ACCESS_KEY_ID = "XXXX";
 
    /**
     * todo accessKeySecret(在阿里云访问控制台寻找)
     */
    private static final String ACCESS_KEY_SECRET = "XXXXX";
 
    /**
     * todo 必填:短信签名
     */
    private static final String SIGN_NAME = "XXXX";    
  
    /**
     * todo 必填:REGION_ID
     */
    private static final String REGION_ID = "cn-hangzhou";
 
    /**
     * 发送方法
     * @param phone 电话号码
     * @param templateCode 模板编号
     * @param templateParam 模板中的参数
     *
     * @return 返回值
     * @throws ClientException 异常
     */
    public static SendSmsResponse sendSms(String phone,String templateCode, String templateParam) throws ClientException {
 
        //可自助调整超时时间
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
 
        //初始化acsClient,暂不支持region化
        IClientProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        DefaultProfile.addEndpoint(REGION_ID, REGION_ID, PRODUCT, DOMAIN);
        IAcsClient acsClient = new DefaultAcsClient(profile);
 
        SendSmsRequest request = new SendSmsRequest();
        request.setPhoneNumbers(phone);
        request.setSignName(SIGN_NAME); // 短信签名
        request.setTemplateCode(templateCode);
        request.setTemplateParam(templateParam);        
        
        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
        request.setOutId("10000");
        
        //hint 此处可能会抛出异常,注意catch
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
        return sendSmsResponse;
    }
 
    public static void main(String[] args) throws ClientException, InterruptedException {    	
    	
    	Map<String,String> paramMap = new HashMap<String,String>();
		//map.put("name",name);
		String  code = createRandomVcode();
		paramMap.put("code", code);
		String templateParam= com.alibaba.fastjson.JSONObject.toJSONString(paramMap);
    	
		String phones = "XXXXXXX";
		String templateCode = "XXXXXXX";  //模板编号,不同场景,编号不同(如注册,找回密码,密码登录等)
        SendSmsResponse response = sendSms(phones,templateCode,templateParam);
        System.out.println("短信接口返回的数据----------------");
        System.out.println("Code=" + response.getCode());
        System.out.println("Message=" + response.getMessage());
        System.out.println("RequestId=" + response.getRequestId());
        System.out.println("BizId=" + response.getBizId());
    }
 
    /**
     * 生成六位随机数
     * @return
     */
    public static String createRandomVcode() {
        //验证码
        StringBuilder vcode = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            vcode.append((int) (Math.random() * 9));
        }
        return vcode.toString();
    }
}
发布了297 篇原创文章 · 获赞 263 · 访问量 114万+

猜你喜欢

转载自blog.csdn.net/xiaojin21cen/article/details/103761899