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

短信推广的优点以及缺点

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

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

短信推广流程简化图

短信推广流程简化图.png

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

添加maven依赖SDK

           

            com.aliyun 

            aliyun-java-sdk-dysmsapi          

            2.1.0





           com.aliyun

           aliyun-java-sdk-core

           4.1.0


具体代码

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对接短信服务商进行短信发送)