美文网首页
Java对接短信服务商进行短信发送

Java对接短信服务商进行短信发送

作者: hbqzbl | 来源:发表于2020-03-03 20:07 被阅读0次

    短信推广的优点以及缺点

    短信推广是互联网时代企业推广的主要方式之一,短信推广有优点也有缺点,相信我们每个人每天都会收到许多短信,有时会令人厌烦,但奇怪的是我们打开的概率还是非常之高的,也许是生怕错过一些重要的信息吧。

    • 优点
      成本较低:短信推广是按每条来计费的,一条一般3分到5分左右,相比搜索引擎竞价排名成本可控。
      转化率较高:短信推广的转化率可以说是所有推广方式中最高的一种了,据国外研究可以达到45%,数据可能有夸张之嫌,但短信推广的转化率之高毋庸置疑。
      短信查看率最高:用户收到短信后打开的概率是非常高的,可以到达90%以上,所以只要你发送一条有价值的信息,就可以被用户查看,并进行互动,进而提升转化率。
      跳转方便:在短信内容里可以加上你想让用户跳转的链接、网店店铺、app下载页面等等都可以,跳转很随意。
    • 缺点
      用户信任问题:由于垃圾短信的泛滥,导致用户对垃圾短信营销的信任度低,其实在国内,无论什么推广方式,都有信任问题,社交平台推广,邮件营销,搜索引擎等等。
      用户号码获取的问题:进行发短信前需要知道用户的电话号码,所以短信推广主要用作提升客户的复活率,复购率。引流则需要新用户的电话号码。

    短信推广流程简化图

    短信推广流程简化图.png

    下面介绍java集成阿里云短信服务实现发送短信功能

    添加maven依赖SDK

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

    具体代码

    package com.test.ali;
    
    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 SmsUtil {
    
        /**
         * 短信发送(可以一次请求向多个不同的手机号发送
         * 同样的内容)
         * @param accessKeyId akID
         * @param accessSecret ak密钥
         * @param phoneNumber 手机号码(如果为多个手机号用英文逗号隔开如:18600000000,18600000001)
         * @param signName 短信签名名称
         * @param templateCode 短信签名模版
         * @param templateParam 短信模版变量对应的实际值
         */
        public static void sendSms(String accessKeyId, String accessSecret,
                                   String phoneNumber, String signName,
                                   String templateCode, String templateParam) {
    
            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);
            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", phoneNumber);
            request.putQueryParameter("SignName", signName);
            request.putQueryParameter("TemplateCode", templateCode);
            request.putQueryParameter("TemplateParam", templateParam);
            try {
                CommonResponse response = client.getCommonResponse(request);
                String result = response.getData();//返回发送状态
    
                System.out.println(result);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 查看短信发送记录和发送状态
         * @param accessKeyId akID
         * @param accessSecret ak密钥
         * @param phoneNumber 手机号码
         * @param sendDate 查询日期 yyyyMMdd
         * @param pageSize 每页记录数
         * @param currentPage 第几页
         */
        public static void querySmsSendDetails(String accessKeyId, String accessSecret,
                                               String phoneNumber, String sendDate,
                                               String pageSize, String currentPage) {
    
            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);
            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("QuerySendDetails");
            request.putQueryParameter("RegionId", "cn-hangzhou");
            request.putQueryParameter("PhoneNumber", phoneNumber);
            request.putQueryParameter("SendDate", sendDate);
            request.putQueryParameter("PageSize", pageSize);
            request.putQueryParameter("CurrentPage", currentPage);
            try {
                CommonResponse response = client.getCommonResponse(request);
                String result = response.getData();
                //TODO 对结果数据进行处理或者返回
    
                System.out.println(request);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
        }
    
    
        public static void main(String args[]) {
            SmsUtil.sendSms("你的accessKeyId",
                    "你的accessSecret",
                    "要发送的手机号码",
                    "短信签名名称",
                    "短信签名模版",
                    "短信模版变量对应值
    如:{\"code\":666666}");
        }
    }
    

    阿里云短信服务设置

    (下面四个步骤设置完成,以上代码就可以进行调用了!)

    1.实名认证,使用阿里云产品时必须要进行实名认证

    1-1.个人实名认证

    有两种方式,可以通过个人支付宝或者阿里云app
    如下图所示:


    image

    1-2.企业实名认证

    阿里云企业实名认证可以通过四种途径:

    • 通过企业支付宝授权认证。
    • 通过企业法人支付宝授权认证。
    • 通过企业法人扫脸认证。
    • 通过企业银行打款方式认证。

    如下图所示:


    image

    2.购买阿里云短信套餐包

    image

    3.申请短信签名以及短信模版

    短信签名是短信发送方的身份,短信模版是短信的内容:

    image

    3-1.免费开通短信服务

    3-2.添加签名

    image

    3-3.添加模版

    image

    短信签名和短信模版审核会很快。

    4.创建AccessKey

    4-1.新建用户

    image

    4-2.记住如下展示AccessKey相关信息

    务必要记住下图中的accsessKeyId以及accessKeySecret,可以点击列表

    上方下载CSV文件进行下载保存

    image

    4-3.给新建用户赋予短信相关权限

    点击上图添加权限按钮给用户赋予短信相关权限

    image

    相关文章

      网友评论

          本文标题:Java对接短信服务商进行短信发送

          本文链接:https://www.haomeiwen.com/subject/pyrklhtx.html