接入阿里云短信服务
1.注册阿里云短信服务账号,这里使用淘宝账号就可以登陆,不做演示,入口如图
2.既然使用服务,那肯定要涉及到费用,我们看一下收费标准,连接:短信业务规则
3.API说明文档,生成Acceses Key(生成后请妥善保存)
4.选择模板,获取模板code
注:${code}为变量名称
申请成功后会得到模板code
注意事项:
短信格式:
? 短信由签名和模板两部分组成。用户需要先申请短信签名,审批通过后,再申请短信模板
? 短信示例:【阿里云】验证码${code},您正进行支付宝的身份验证
? 短信签名是:【阿里云】
? 短信模板是: 验证码${code},您正进行支付宝的身份验证
? 变量是:${code}
? 验证码和系统通知类短信需申请:系统签名和系统模板
? 推广营销类短信需申请:营销签名和营销模板
? 短信内容不支持【】,会与签名混淆,特殊符号可能会导致短信出现乱码,暂不支持如、、 、 →、等特殊符号
5.申请签名(根据用户属性来创建符合自身属性的签名信息)
5.1点击添加签名
选择个人使用
6.下载SDK开发工具和DEMO
下载后解压 找到这两个jar包,导入工程
1. import com.aliyuncs.DefaultAcsClient;
2. import com.aliyuncs.IAcsClient;
3. import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
4. import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
5. import com.aliyuncs.exceptions.ClientException;
6. import com.aliyuncs.http.MethodType;
7. import com.aliyuncs.profile.DefaultProfile;
8. import com.aliyuncs.profile.IClientProfile;
9.
14. public class ALiSMSUtil {
15. final static String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
16. final static String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
17. //替换成你的AK
18. final static String accessKeyId = "你的accessKeyId";//你的accessKeyId
19. final static String accessKeySecret = "你的accessKeySecret";//你的accessKeySecret
20. final static String TEMPLATECODE = "你的模板CODE";//你的模板CODE
21. final static String SIGNNAME = "你的签名名称";//你的签名名称
22.
23.
28. public static void sendCode(String tel) throws ClientException {
29. //设置超时时间-可自行调整
30. System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
31. System.setProperty("sun.net.client.defaultReadTimeout", "10000");
32. //初始化ascClient需要的几个参数
33.
34.
35.
36. //初始化ascClient,暂时不支持多region(请勿修改)
37. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
38. accessKeySecret);
39. DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
40. IAcsClient acsClient = new DefaultAcsClient(profile);
41. //组装请求对象
42. SendSmsRequest request = new SendSmsRequest();
43. //使用post提交
44. request.setMethod(MethodType.POST);
45. //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
46. request.setPhoneNumbers(tel);
47. //必填:短信签名-可在短信控制台中找到
48. request.setSignName(SIGNNAME);
49. //必填:短信模板-可在短信控制台中找到
50. request.setTemplateCode(TEMPLATECODE);
51. //生成随机6位数字(验证码,生成后发送给用户)
52. long round = Math.round(Math.random()*1000000);
53. String code = String.valueOf(round);
54. //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
55. //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
56. //request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
57. request.setTemplateParam("{\"code\":\""+code+"\"}");
58. //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
59. //request.setOutId("yourOutId");
60. //请求失败这里会抛ClientException异常
61. try {
62. SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
63. if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
64. //请求成功
65. System.out.println("请求消息结果 --> "+sendSmsResponse.getMessage());
66. }
67. } catch (Exception e) {
68. // TODO Auto-generated catch block
69. //e.printStackTrace();
70. System.out.println("请求失败");
71. }
72. }
73. }
[java] view plain copy
1. import com.aishang.sms.ALiSMSUtil;
2. import com.aliyuncs.exceptions.ClientException;
3.
4. public class DemoTest {
5.
6. public static void main(String[] args) {
7. try {
8. ALiSMSUtil.sendCode("手机号码");
9. } catch (ClientException e) {
10. System.out.println("初始化失败");
11. }
12.
13. }
14.
15. }
爱尚实训--做品质教育 用事实说话
学校地址:哈尔滨市南岗区和兴三道街214号13层
咨询热线:0451-51062023、13624602876(微信同上)
原文地址:https://www.cnblogs.com/aishangshixun/p/8875847.html