阿里云短信接口 JAVA

 所需jar包:https://download.csdn.net/download/weixin_42114911/10628916

/**
 * 发送短信 Util
 * 
 * @author wd
 */
public class MoblieMessageUtil {

	// 短信API产品名称
	private final static String PRODUCT = "Dysmsapi";
	// 短信API产品域名
	private final static String DOMAIN = "dysmsapi.aliyuncs.com";

	/**
	 * 生成随机的6位数,短信验证码
	 * 
	 * @return
	 */
	public static String getMsgCode() {
		int n = 6;
		StringBuilder code = new StringBuilder();
		Random ran = new Random();
		for (int i = 0; i < n; i++) {
			code.append(Integer.valueOf(ran.nextInt(10)).toString());
		}
		return code.toString();
	}

	/**
	 * 发送注册验证码
	 * 
	 * @throws ClientException
	 */
	public static String sendMessagesVerifyCode(String phone, String code) throws ClientException {
		String msg = "";
		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
		final String accessKeyId = ConstantUtil.SMS_ACCESS_KEY_ID;// 你的accessKeyId
		final String accessKeySecret = ConstantUtil.SMS_ACCESS_KEY_SECRET;// 你的accessKeySecret
		// 初始化ascClient,暂时不支持多region(请勿修改)
		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
		DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", MoblieMessageUtil.PRODUCT, MoblieMessageUtil.DOMAIN);
		IAcsClient acsClient = new DefaultAcsClient(profile);
		// 组装请求对象
		SendSmsRequest request = new SendSmsRequest();
		// 使用post提交
		request.setMethod(MethodType.POST);
		// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
		request.setPhoneNumbers(phone);
		// 必填:短信签名-可在短信控制台中找到
		request.setSignName(ConstantUtil.SMS_SIGN_NAME);
		// 必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
		request.setTemplateCode(ConstantUtil.SMS_TEMPLATE_CODE_REGISTER);
		request.setTemplateParam("{\"code\":\"" + code + "\"}");
		// 请求失败这里会抛ClientException异常
		SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
		System.out.println(sendSmsResponse.getCode());
		if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
			// 请求成功
			msg = "短信发送成功";
		} else {
			msg = "短信发送失败";
		}
		return msg;

	}

	/**
	 * 发送找回密码短信
	 * 
	 * @throws ClientException
	 */
	public static String sendMessagesUserPwd(String phone, String code) throws ClientException {
		String msg = "";
		System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
		System.setProperty("sun.net.client.defaultReadTimeout", "10000");
		final String accessKeyId = ConstantUtil.SMS_ACCESS_KEY_ID;// 你的accessKeyId
		final String accessKeySecret = ConstantUtil.SMS_ACCESS_KEY_SECRET;// 你的accessKeySecret
		// 初始化ascClient,暂时不支持多region(请勿修改)
		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
		DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", MoblieMessageUtil.PRODUCT, MoblieMessageUtil.DOMAIN);
		IAcsClient acsClient = new DefaultAcsClient(profile);
		// 组装请求对象
		SendSmsRequest request = new SendSmsRequest();
		// 使用post提交
		request.setMethod(MethodType.POST);
		// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
		request.setPhoneNumbers(phone);
		// 短信签名
		request.setSignName(ConstantUtil.SMS_SIGN_NAME);
		// 短信模板 忘记密码
		request.setTemplateCode(ConstantUtil.SMS_TEMPLATE_CODE_FORGET_PASSWORD);
		request.setTemplateParam("{\"code\":\"" + code + "\"}");
		// 请求失败这里会抛ClientException异常
		SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
		System.out.println(sendSmsResponse.getCode());
		if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
			// 请求成功
			msg = "短信发送成功";
		} else {
			msg = "短信发送失败";
		}
		return msg;

	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42114911/article/details/82110921