阿里云发送短信

Posted zzlcome

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云发送短信相关的知识,希望对你有一定的参考价值。

1.首先登陆阿里云平台添加短信模板

https://account.aliyun.com

 

技术图片

 

2.进入国内消息

技术图片

 

3.签名种类

技术图片

 

4.添加模板

 

技术图片

 

5.代码涉及的参数

product=Dysmsapi
domain=dysmsapi.aliyuncs.com
regionId=cn-hangzhou
defaultConnectTimeout=30000
defaultReadTimeout=30000

 

*

这两个参数申请签名的时候,阿里云返回的

accessKeyId=
accessKeySecret=
*


msgSignName=签名1

6.

 

6.代码

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.json.JSONException;

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;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import com.google.gson.Gson;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;

public class AliSendMsg 
 /**
     *@param phone 接收手机号
     *@param smscode 短信模版名称
     *@param map 短信模版所需参数
     */
public static SendSmsResponse sendSms(String phone, String smscode, Map<String, String> map) 
        SendSmsResponse sendSmsResponse = null;
        try 
            Prop prop = PropKit.use("msg.properties");
            String defaultConnectTimeout = prop.get("defaultConnectTimeout");
            String defaultReadTimeout = prop.get("defaultReadTimeout");
            String regionId = prop.get("regionId");
            String product = prop.get("product");
            String domain = prop.get("domain");
            String accessKeyId = prop.get("accessKeyId");
            String accessKeySecret = prop.get("accessKeySecret");
            
            // 可自助调整超时时间
            System.setProperty("sun.net.client.defaultConnectTimeout", defaultConnectTimeout);
            System.setProperty("sun.net.client.defaultReadTimeout", defaultReadTimeout);

            // 初始化acsClient,暂不支持region化
            IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultProfile.addEndpoint(regionId, regionId, product, domain);
            IAcsClient acsClient = new DefaultAcsClient(profile);

            // 组装请求对象-具体描述见控制台-文档部分内容
            SendSmsRequest request = new SendSmsRequest();
            // 必填:待发送手机号
            request.setPhoneNumbers(phone);
            // 必填:短信签名-可在短信控制台中找到
            String signName = prop.get("msgSignName");
            request.setSignName(signName);
            // 必填:短信模板-可在短信控制台中找到
            request.setTemplateCode(smscode);
            // 可选:模板中的变量替换JSON串,如模板内容为"亲爱的$name,您的验证码为$code"时,此处的值为
            Gson gson = new Gson();
            // request.setTemplateParam("\\"name\\":\\"Tom\\",\\"number\\":\\"100\\",\\"code\\":\\"1234\\"");
            if(!map.isEmpty() && map != null)
                request.setTemplateParam(gson.toJson(map));
            
            // 选填-上行短信扩展码(无特殊需求用户请忽略此字段)
            // request.setSmsUpExtendCode("90997");

            // 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
            // request.setOutId("yourOutId");

            // hint 此处可能会抛出异常,注意catch
            sendSmsResponse = acsClient.getAcsResponse(request);
         catch (Exception e) 
            try 
                throw new Exception(e);
             catch (Exception e1) 
                e1.printStackTrace();
            
        
        return sendSmsResponse;
    

以上是关于阿里云发送短信的主要内容,如果未能解决你的问题,请参考以下文章

(二十三)ATP应用测试平台——阿里云短信发送功能集成

C# 使用阿里云发送短信

使用阿里云的短信服务发送短信

使用阿里云的短信服务发送短信

使用阿里云短信服务发送短信验证码

go 发送短信研究