精华内容
下载资源
问答
  • 怎样避免短信验证码发送失败

    千次阅读 2018-12-06 17:49:01
    大家都知道生活中短信验证码是必不可少的,我们更改密码,确认身份还有日常交易,或者是使用app短信平台,都会...首先就是格式要正确,小编先给大家放一个正确的短信验证码信息示例:“【全民直播Live】您的验证码是...

    大家都知道生活中短信验证码是必不可少的,我们更改密码,确认身份还有日常交易,或者是使用app短信平台,都会接触到短信验证码,但是有时候会遇到点击“发送验证码”后没收到短信验证码的现象,这样对企业的发展非常不利,损失客源也是分分钟的事,所以说怎么避免短信验证码发送失败给平台带来不必要的损失呢?

     

    首先就是格式要正确,小编先给大家放一个正确的短信验证码信息示例:“【全民直播Live】您的验证码是6285,15分钟内有效。”所以正确格式就是:【公司名称/签名】+短信的内容+验证码(+15分钟内有效/如不是本人可忽略此条信息),如果你向顾客发送这样的短信:“您的验证码是6285,15分钟内有效。”是发送不出去的,因为没有公司签名,如果【】换成[]也是发送不出去的,这些基本的一定要知道,避免不必要的损失,发送不出去在重新编辑也是浪费时间浪费资源的事情。

    短信验证码
    短信验证码

    这个【】里面只能有一个签名 ,如果多个也会发送失败,一定要注意,而且里面的签名也要保证和报备的名称一样,这样才能发送成功。

     

    以上说完了短信内容规则还要考虑选择短信平台上,有时候发送验证码失败可能并不只是短信内容编辑错误的原因,还可能是因为通道不稳定导致的结果,要选择三网合一的短信通道,因为那种平台是和中国电信,中国联通,中国移动合作的平台,就是不管注册平台的是那种网络的手机号都能够把验证码发送到用户的手机里,这样短信验证码发送失败的几率又一次降低,而且短信验证码要求速度快,所以在选择短信平台方面也要自己先测试一下。

     

    这里就要选择一个既靠谱又服务态度好的平台,中昱维信是一家资深的短信验证码平台,能够保证用户在短时间内接收到短信信息,而且平台有很多帮助企业选择短信业务的内容,还有各种帮助企业正确实行短信营销的内容,绝对是一家高品质的短信平台,所以要是想避免短信验证码发送失败不仅要内容符合规定,平台也要选择好的。

    展开全文
  • 易语言用编写手机短信软件源码,用编写手机短信软件,发送短信,获得网关列表
  • 短信编辑

    2015-06-30 11:50:20
    这个是本人学习过程中开发的一个小例子,可以通过安卓获取系统联系人和系短信,然后可以根据这些信息来进行短信的发送,经过真机测试,本程序真实可行
  • 易语言源码用易语言编写手机短信软件.rar 易语言源码用易语言编写手机短信软件.rar 易语言源码用易语言编写手机短信软件.rar 易语言源码用易语言编写手机短信软件.rar 易语言源码用易语言编写手机短信软件.rar ...
  • 编写短信接收心得

    2015-06-25 15:51:52
    最近在写一个接收短信的APP,在这次的学习中其实收货还是挺多的,了解了基本的短信接收模式、数据库(SQLite)的 创建和CROD操作的基本应用、适配器类的新建、SDK版本的获取的方法、接口的应用和UI线程的更新的思想; ...
    最近在写一个接收短信的APP,在这次的学习中其实收货还是挺多的,了解了基本的短信接收模式、数据库(SQLite)的创建和CROD操作的基本应用、适配器类的新建、SDK版本的获取的方法、接口的应用和UI线程的更新的思想;在开始写程序之前由于基本工比较差,所以我是在同事的指导下将项目划分若干部分进行写的,然后将各部分功能组合起来;


    下面先来介绍下短信的接收代码:
    1.首先需要在主函数里面注册一个广播接收器,在这里我是创建了一个SMSTools类,将注册方法写在类里面的,这样便于封装。

       
    	public void registerSmsReceiver(Context context, BroadcastReceiver ReceiverName) {
       		ReceiverName = new SmsReceiver();     // 实例化一个广播接收器
        		IntentFilter filter = new IntentFilter(SMS_Action);  // 设置Action   
        		// SMS_Action = "android.provider.Telephony.SMS_RECEIVED";
        		context.registerReceiver(ReceiverName, filter);   // 注册广播接收器
    	}
    

    这些步骤就是注册一个广播的基本要求,对于广播也分有序广播和无序广播,我们可以抽空针对广播机制进行好好学习下,因为在android系统中广播的应够还是非常多的,基本上可以这样说,每一个APP都会用到广播,所以可想而知是多么重要了,他也是四大组件之一;

    2.下面我们来看广播接收器,看看他的实现以及短信内容的介绍方式,同样的我们是放在SmsTools类里面的。

    	package com.development.util.sms;
    
    	import android.content.BroadcastReceiver;
    	import android.content.Context;
    	import android.content.Intent;
    	import android.util.Log;
    
    	/**
     	* Created by Andy on 2015/6/5.
    	 */
    	public class SmsReceiver extends BroadcastReceiver{
    
        		SmsTools smsTools;
        		@Override
        		public void onReceive(Context context, Intent intent) {
            		smsTools = SmsTools.getInstance(context);    
            		Log.d("MainActivity", "[1] SmsReceiver smsTools = " + smsTools);
            		Log.d("MainActivity", "Action " + intent.getAction());
            		smsTools.getBroadcastData(intent);   // 接收广播的短信内容
            		abortBroadcast();     // 终止广播接收
        		}
    	}
    

    在这里我们可以看到这是一个基本的广播接收器的模版,对于广播我们可以参照这个模版写,在这里我们是建一个单独的类来实现的,而不是内部类,这样做的主要原因是为了考虑后期项目工程的管理;下面我们再来看看广播接收对短信内容的解析处理。

    	/**
     	* 通过广播来获取短信信息并更新UI界面
     	*
     	* @param intent
     	*/
    	public void getBroadcastData(Intent intent) {
        		if (intent.getAction().equals(SMS_Action)) {
            		Bundle bundle = intent.getExtras();
            		if (bundle != null) {
                			Object[] pdus = (Object[]) bundle.get("pdus");        //解析短信puds封装
                			SmsMessage[] messages = new SmsMessage[pdus.length];  //解析短信内容
                			for (int i = 0; i < pdus.length; i++) {
                    			byte[] pdu = (byte[]) pdus[i];
                    			messages[i] = SmsMessage.createFromPdu(pdu);
                    			Log.d("MainActivity", "====== SmsReceiver[" + i + "]========");
                			}
                			getSmsData(messages);     // 获取每条短信的具体内容
                			smsUpdateData data = new MainActivity();
                			data.updataListView();    // 调用接口更新UI界面
                			Log.d("MainActivity", "[2] ReceiverBroast : " + data);
            		}
        		}
    	}
    由于短信息是通过puds的方式通过电信运营商传递到android手机的,所以我们在接收到数据后就要求对数据进行puds解析,然后再分别取出每条短信的具体内容,最后进行短信内容的处理,在这里主要输将数据写入数据库中,让后再去读取数据库的数据, 记得在开始测试短信接收模块的时候我们是通过打印log的形式来测试短信内容是否读取到了,以及读取到的数据是否正确。我们来详细看看短信内容的具体读取方式,来具体了解下短信的接收。

    	/**
     	*  读取短信的具体内容存入数据库中
     	* @param messages
     	*/
    	private void getSmsData(SmsMessage[] messages) {
        		String temp = null ;
        		SmsMessage sms = messages[0];
        		ContentValues values = new ContentValues();
        		Date date = new Date(sms.getTimestampMillis());  // 获取短信日期
        		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   // 转化日期格式
        		String receiveTime = format.format(date);
        		values.put("date", receiveTime.trim());    // 将日期存入以键值对形式放入values 中;
    
        		
    		temp = dealWithTel(sms.getOriginatingAddress());  // 由于电话号码前面运营商加入了“+86”字符。
    		Log.d(Tag,"temp = "+temp);
    		smsUpdateData mdata = new MainActivity();
    		String name = mdata.getContactsName(temp,mContext);  // 根据号码获得联系中的备注姓名
    Log.d(Tag, "name = " + name); values.put("telphone", name); // 将拆分的短信合并成一条信息存入数据库 if (messages.length == 1) { values.put("body", sms.getDisplayMessageBody()); } else { StringBuilder body = new StringBuilder(); for (int i = 0; i < messages.length; i++) { sms = messages[i]; body.append(sms.getDisplayMessageBody()); Log.d("MainActivity","sms = "+sms.getDisplayMessageBody()); } values.put("body", body.toString()); } values.put("status", sms.getStatus()); values.put("read", 0); values.put("ServiceCenterAddress", sms.getServiceCenterAddress()); insert(values); // 将数据插入数据库 } 从该函数的实现中我们可以看出,主要是将短信内容存入数据库中,在这里需要注意的是短信大于170个字符或者67个汉字时是会自动分为多条发送的,所以我们在读取短信内容时也需要将短信还原为一条,不能让它显示多条,还有要注意的是在根据电话号码获取联系人的名字;










    展开全文
  • iPhone 短信编辑

    2015-07-22 15:23:46
    可以修改iPhone 上的短信,如果你觉得别人发给你的短信不爽的,可以用这个工具来修改。还可以添加短信到手机上。功能非常强大,所以大家不要用来干坏事。后果自负。 最重要的是手机不需要越狱。
  • 1.首先要注册阿里云账户,...2.然后要创建对应的短信签名和短信模板 链接: https://dysms.console.aliyun.com/dysms.htm#/domestic/text/sign 3.使用maven的pom文件,导入阿里云提供的SDK包 <dependency> <

    1.首先要注册阿里云,购买阿里云短信服务,拿到AccessKey ID和AccessKey Secret

    链接: https://usercenter.console.aliyun.com/#/manage/ak

    2.创建短信签名和模板

    链接: https://dysms.console.aliyun.com/dysms.htm#/domestic/text/sign

    3.使用maven导入阿里提供的SDK包

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.3</version>
    </dependency>
    

    4.封装好的自拟定工具类

    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;
    import lombok.AllArgsConstructor;
    import lombok.Getter;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.IOException;
    import java.util.Base64;
    import java.util.Map;
    
    /**
     * 阿里云短信工具类
     *
     * <dependency>
     * <groupId>com.aliyun</groupId>
     * <artifactId>aliyun-java-sdk-core</artifactId>
     * <version>4.5.3</version>
     * </dependency>
     */
    public class AliYunSmsUtils {
    
        //阿里云用户AccessKey ID
        private static final String ACCESS_KEY_ID = "aaa";
        //阿里云用户AccessKey Secret
        private static final String ACCESS_SECRET = "bb";
        //阿里云短信服务器区域类型
        private static final String REGION_ID = "cn-hangzhou";
        //阿里云短信请求地址
        private static final String ALIYUN_IP = "dysmsapi.aliyuncs.com";
        //阿里云短信服务版本号
        private static final String VERSION = "2017-05-25";
    
        /**
         * 发送短信
         *
         * @param phoneNumbers 接收短信的手机号码
         * @param mapContent   短信内容,key是对应短信模板的参数字段,value是字段对应的内容
         * @param smsCodeType  短信模板签名和短信模板code
         * @return
         */
        public static String startSendSms(String phoneNumbers, Map<String, String> mapContent, SmsCodeType smsCodeType) {
            if (StringUtils.getNotNull(phoneNumbers) || mapContent.isEmpty() || smsCodeType == null) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.SEND_SMS);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置接收短信的手机号码
            commonRequest.putQueryParameter("PhoneNumbers", phoneNumbers);
            //设置阿里云短信模板签名
            commonRequest.putQueryParameter("SignName", smsCodeType.signName);
            //设置阿里云短信模板code
            commonRequest.putQueryParameter("TemplateCode", smsCodeType.templateCode);
            //设置短信内容
            commonRequest.putQueryParameter("TemplateParam", parsingKeyValue(mapContent));
            try {
                //确认发送短信
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                //参数配置校验未通过错误
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 批量发送短信
         *
         * @param phoneAndContentMap 接收手机号码集合,短信签名集合,短信内容集合
         * @param smsCodeType        短信模板code
         * @return
         */
        public static String startSendBatchSms(Map<Map<String, SmsCodeType>, Map<String, String>> phoneAndContentMap, SmsCodeType smsCodeType) {
            if (phoneAndContentMap.isEmpty() || smsCodeType == null) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.BATCH_SEND_SMS);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置接收短信的手机号码
            String a = parsingPhone(phoneAndContentMap);
            commonRequest.putQueryParameter("PhoneNumberJson", parsingPhone(phoneAndContentMap));
            //设置阿里云短信模板签名
            String b = parsingSignName(phoneAndContentMap);
            commonRequest.putQueryParameter("SignNameJson", parsingSignName(phoneAndContentMap));
            //设置阿里云短信模板code
            commonRequest.putQueryParameter("TemplateCode", smsCodeType.templateCode);
            //设置短信内容
            String c = parsingValue(phoneAndContentMap);
            commonRequest.putQueryParameter("TemplateParamJson", parsingValue(phoneAndContentMap));
            try {
                //确认发送短信
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                //参数配置校验未通过错误
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 查询指定日期下的指定/所有短信
         *
         * @param phoneNumbers 接收短信的手机号码
         * @param time         发送短信的时间,格式 YYYYmmDD
         * @param page         当前页
         * @param limit        每页条数
         * @param bizId        发送短信成功以后返回的唯一标识
         * @return
         */
        public static String startQuerySendDetails(String phoneNumbers, String time, int page, int limit, String bizId) {
            if (StringUtils.getNotNull(phoneNumbers) || StringUtils.getNotNull(time) || page < 1 || limit < 1) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.QUERY_SEND_DETAILS);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置当前页
            commonRequest.putQueryParameter("CurrentPage", String.valueOf(page));
            //设置每页条数
            commonRequest.putQueryParameter("PageSize", String.valueOf(limit));
            //设置发送短信的时间,格式 YYYYmmDD
            commonRequest.putQueryParameter("SendDate", time);
            //设置接收短信的手机号码
            commonRequest.putQueryParameter("PhoneNumber", phoneNumbers);
            if (!StringUtils.getNotNull(bizId)) {
                commonRequest.putQueryParameter("BizId", bizId);
            }
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 申请通用短信签名
         *
         * @param signName          短信签名名称
         * @param smsSignSourceType 短信签名类型
         * @param remark            短信签名说明
         * @param file              短信签名图片(针对不同的类型传不同的图片)
         * @return
         */
        public static String startAddSmsSign(String signName, SmsSignSourceType smsSignSourceType, String remark, MultipartFile file) {
            if (StringUtils.getNotNull(signName) || smsSignSourceType == null || StringUtils.getNotNull(remark) || file == null) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.ADD_SMS_SIGN);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置阿里云短信签名申请签名名称
            commonRequest.putQueryParameter("SignName", signName);
            //设置阿里云短信签名申请类型
            commonRequest.putQueryParameter("SignSource", String.valueOf(smsSignSourceType.SignSourceId));
            //设置阿里云短信签名申请说明
            commonRequest.putQueryParameter("Remark", remark);
            //设置阿里云短信签名,当前图片格式
            String str = file.getOriginalFilename();
            commonRequest.putQueryParameter("SignFileList.1.FileSuffix", str.substring(str.indexOf(".") + 1));
            try {
                //设置阿里云短信签名,当前图片的base64字符串
                commonRequest.putQueryParameter("SignFileList.1.FileContents", Base64.getEncoder().encodeToString(file.getBytes()));
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 申请短信模板
         *
         * @param smsTemplateType 短信模板类型
         * @param templateName    短信模板名称
         * @param templateContent 短信模板格式内容,对应的参数用 ${name} 表示,对应发送短信时候的内容参数
         * @param remark          短信模板申请说明
         * @return
         */
        public static String startAddSmsTemplate(SmsTemplateType smsTemplateType, String templateName, String templateContent, String remark) {
            if (smsTemplateType == null || StringUtils.getNotNull(templateName) || StringUtils.getNotNull(templateContent) || StringUtils.getNotNull(remark)) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.ADD_SMS_TEMPLATE);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置阿里云短信模板申请类型
            commonRequest.putQueryParameter("TemplateType", String.valueOf(smsTemplateType.TemplateTypeId));
            //设置阿里云短信模板申请名称
            commonRequest.putQueryParameter("TemplateName", templateName);
            //设置阿里云短信模板申请格式内容
            commonRequest.putQueryParameter("TemplateContent", templateContent);
            //设置阿里云短信模板申请说明
            commonRequest.putQueryParameter("Remark", remark);
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 删除短信签名
         *
         * @param signName 短信签名名称
         * @return
         */
        public static String startDeleteSmsSign(String signName) {
            if (StringUtils.getNotNull(signName)) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.DELETE_SMS_SIGN);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置要删除的短信模板签名名称
            commonRequest.putQueryParameter("SignName", signName);
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 删除短信模板
         *
         * @param templateCode
         * @return
         */
        public static String startDeleteSmsTemplate(String templateCode) {
            if (StringUtils.getNotNull(templateCode)) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.DELETE_SMS_TEMPLATE);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置要删除的短信模板签名名称
            commonRequest.putQueryParameter("TemplateCode", templateCode);
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 修改申请未通过的短信签名再次申请
         *
         * @param signName          短信签名名称(必须要是申请未通过的短信签名,不然会报错)
         * @param smsSignSourceType 短信签名类型
         * @param remark            短信签名说明
         * @param file              短信签名图片(针对不同的类型传不同的图片)
         * @return
         */
        public static String startModifySmsSign(String signName, SmsSignSourceType smsSignSourceType, String remark, MultipartFile file) {
            if (StringUtils.getNotNull(signName) || smsSignSourceType == null || StringUtils.getNotNull(remark) || file == null) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.MODIFY_SMS_SIGN);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置阿里云短信签名申请签名名称
            commonRequest.putQueryParameter("SignName", signName);
            //设置阿里云短信签名申请类型
            commonRequest.putQueryParameter("SignSource", String.valueOf(smsSignSourceType.SignSourceId));
            //设置阿里云短信签名申请说明
            commonRequest.putQueryParameter("Remark", remark);
            //设置阿里云短信签名,当前图片格式
            String str = file.getOriginalFilename();
            commonRequest.putQueryParameter("SignFileList.1.FileSuffix", str.substring(str.indexOf(".") + 1));
            try {
                //设置阿里云短信签名,当前图片的base64字符串
                commonRequest.putQueryParameter("SignFileList.1.FileContents", Base64.getEncoder().encodeToString(file.getBytes()));
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 修改申请未通过的短信模板再次申请
         *
         * @param smsTemplateType 短信模板类型
         * @param templateName    短信模板名称
         * @param templateCode    短信模板code(申请短信模板时生成的code,修改的时候要带上,必须要是未通过的,不然报错)
         * @param templateContent 短信模板格式内容,对应的参数用 ${name} 表示,对应发送短信时候的内容参数
         * @param remark          短信模板申请说明
         * @return
         */
        public static String startModifySmsTemplate(SmsTemplateType smsTemplateType, String templateName, String templateCode, String templateContent, String remark) {
            if (smsTemplateType == null || StringUtils.getNotNull(templateName) || StringUtils.getNotNull(templateCode) || StringUtils.getNotNull(templateContent) || StringUtils.getNotNull(remark)) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.MODIF_SMS_TEMPLATE);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置阿里云短信模板申请类型
            commonRequest.putQueryParameter("TemplateType", String.valueOf(smsTemplateType.TemplateTypeId));
            //设置阿里云短信模板申请名称
            commonRequest.putQueryParameter("TemplateName", templateName);
            //设置阿里云短信模板修改再次申请code
            commonRequest.putQueryParameter("TemplateCode", templateCode);
            //设置阿里云短信模板申请格式内容
            commonRequest.putQueryParameter("TemplateContent", templateContent);
            //设置阿里云短信模板申请说明
            commonRequest.putQueryParameter("Remark", remark);
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 查询指定名称的短信签名
         *
         * @param signName 要查询的短信签名名称
         * @return
         */
        public static String startQuerySmsSign(String signName) {
            if (StringUtils.getNotNull(signName)) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.QUERY_SMS_SIGN);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置要查询的短信签名名称
            commonRequest.putQueryParameter("SignName", signName);
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
        /**
         * 查询指定code的短信模板
         *
         * @param templateCode 要查询的短信模板code
         * @return
         */
        public static String startQuerySmsTemplate(String templateCode) {
            if (StringUtils.getNotNull(templateCode)) {
                throw new NullPointerException();
            }
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = getCommonRequest(SmsInterfaceType.QUERY_SMS_TEMPLATE);
            //初始化阿里云短信接收结果消息体
            CommonResponse commonResponse = null;
    
            //初始化设置阿里云用户唯一标识和短信服务器区域类型(用来认证用户的)
            DefaultProfile defaultProfile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_SECRET);
            IAcsClient iAcsClient = new DefaultAcsClient(defaultProfile);
    
            //设置阿里云短信消息体请求类型
            commonRequest.setSysMethod(MethodType.POST);
            //设置阿里云短信消息体接口调用ip地址
            commonRequest.setSysDomain(ALIYUN_IP);
            //设置阿里云短信服务版本
            commonRequest.setSysVersion(VERSION);
            //设置阿里云短信请求接口类型
            commonRequest.setSysAction(SmsInterfaceType.QUERY_SMS_TEMPLATE.type);
            //设置阿里云短信服务器区域类型
            commonRequest.putQueryParameter("RegionId", REGION_ID);
            //设置要查询的短信签名名称
            commonRequest.putQueryParameter("TemplateCode", templateCode);
            try {
                commonResponse = iAcsClient.getCommonResponse(commonRequest);
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return commonResponse.getData();
        }
    
    
        /**
         * 短信请求接口类型
         */
        @Getter
        @AllArgsConstructor
        private enum SmsInterfaceType {
            //申请短信模板签名
            ADD_SMS_SIGN("AddSmsSign"),
            //申请短信模板
            ADD_SMS_TEMPLATE("AddSmsTemplate"),
            //删除短信模板签名
            DELETE_SMS_SIGN("DeleteSmsSign"),
            //删除短信模板
            DELETE_SMS_TEMPLATE("DeleteSmsTemplate"),
            //修改未审核通过的短信模板签名,重新申请审核
            MODIFY_SMS_SIGN("ModifySmsSign"),
            //修改未审核通过的短信模板,重新申请审核
            MODIF_SMS_TEMPLATE("ModifySmsTemplate"),
            //查询所有短信模板签名
            QUERY_SMS_SIGN("QuerySmsSign"),
            //查询所有短信模板
            QUERY_SMS_TEMPLATE("QuerySmsTemplate"),
            //查询所有已发送的短信
            QUERY_SEND_DETAILS("QuerySendDetails"),
            //发送短信
            SEND_SMS("SendSms"),
            //批量发送短信
            BATCH_SEND_SMS("SendBatchSms");
    
            private final String type;
        }
    
        /**
         * 短信签名和短信模板code
         */
        @Getter
        @AllArgsConstructor
        public enum SmsCodeType {
            //登录确认验证码
            CONFIRM_LOGIN("道贞财务", "SMS_189465821"), 
            //登录异常验证码
            LOGIN_ABNORMAL("道贞财务", "SMS_210350075"),
            //用户注册验证码
            USER_ADD("道贞财务", "SMS_210350074"),
            //修改密码验证码
            UPDATE_PASSWORD("道贞财务", "SMS_210350073"),
            //用户信息变更验证码
            UPDATE_CONTENT("道贞财务", "SMS_210350072"),
            //身份验证验证码
            IDENTITY_CODE("道贞财务", "SMS_210350077");
    
            private final String signName;
    
            private final String templateCode;
        }
    
        /**
         * 短信模板签名类型
         */
        @Getter
        @AllArgsConstructor
        public enum SmsSignSourceType {
            //企事业单位的全称或简称。
            ENTERPRISE(0),
            //工信部备案网站的全称或简称。
            WEB(1),
            //App应用的全称或简称。
            APP(2),
            //公众号或小程序的全称或简称。
            APPLET(3),
            //电商平台店铺名的全称或简称。
            CONSULT(4),
            //商标名的全称或简称。
            TRADEMARK(5);
    
            private final Integer SignSourceId;
        }
    
        /**
         * 短信模板类型
         */
        @Getter
        @AllArgsConstructor
        public enum SmsTemplateType {
            //验证码。
            CODE(0),
            //短信通知。
            notice(1),
            //推广短信。
            push(2),
            //国际/港澳台消息。
            countries(3);
    
            private final Integer TemplateTypeId;
        }
    
    
        /**
         * 所有请求通用参数
         *
         * @param smsInterfaceType
         * @return
         */
        private static CommonRequest getCommonRequest(SmsInterfaceType smsInterfaceType) {
            //初始化设置阿里云短信发送消息体
            CommonRequest commonRequest = new CommonRequest();
            //设置阿里云短信消息体请求类型
            commonRequest.setSysMethod(MethodType.POST);
            //设置阿里云短信消息体接口调用ip地址
            commonRequest.setSysDomain(ALIYUN_IP);
            //设置阿里云短信服务版本
            commonRequest.setSysVersion(VERSION);
            //设置阿里云短信请求接口类型
            commonRequest.setSysAction(smsInterfaceType.type);
            //设置阿里云短信服务器区域类型
            commonRequest.putQueryParameter("RegionId", REGION_ID);
            return commonRequest;
        }
    
        /**
         * 把短信内容进行排版,排成阿里云要求的格式
         *
         * @param mapContent
         * @return
         */
        private static String parsingKeyValue(Map<String, String> mapContent) {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("{");
            for (String key : mapContent.keySet()) {
                stringBuilder.append("'" + key + "':'" + mapContent.get(key) + "',");
            }
            return stringBuilder.substring(0, stringBuilder.length() - 1) + "}";
        }
    
        /**
         * 把批量发送短信的接收手机号码进行排版,排成阿里云要求的格式
         *
         * @param phoneAndContentMap N个手机号码
         * @return
         */
        private static String parsingPhone(Map<Map<String, SmsCodeType>, Map<String, String>> phoneAndContentMap) {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("[");
            for (Map<String, SmsCodeType> stringSmsCodeTypeMap : phoneAndContentMap.keySet()) {
                if (stringSmsCodeTypeMap.size() == 1) {
                    for (String key : stringSmsCodeTypeMap.keySet()) {
                        stringBuilder.append("'" + key + "',");
                    }
                } else {
                    throw new ArrayIndexOutOfBoundsException();
                }
            }
            return stringBuilder.substring(0, stringBuilder.length() - 1) + "]";
        }
    
        /**
         * 把批量发送短信的短信签名名称进行排版,排成阿里云要求的格式
         *
         * @param phoneAndContentMap
         * @return
         */
        private static String parsingSignName(Map<Map<String, SmsCodeType>, Map<String, String>> phoneAndContentMap) {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("[");
            for (Map<String, SmsCodeType> stringSmsCodeTypeMap : phoneAndContentMap.keySet()) {
                if (stringSmsCodeTypeMap.size() == 1) {
                    for (SmsCodeType value : stringSmsCodeTypeMap.values()) {
                        stringBuilder.append("'" + value.signName + "',");
                    }
                } else {
                    throw new ArrayIndexOutOfBoundsException();
                }
            }
            return stringBuilder.substring(0, stringBuilder.length() - 1) + "]";
        }
    
        /**
         * 把批量发送短信的短信内容进行排版,排成阿里云要求的格式
         *
         * @param phoneAndContentMap 短信参数名和对应的内容
         * @return
         */
        private static String parsingValue(Map<Map<String, SmsCodeType>, Map<String, String>> phoneAndContentMap) {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("[");
            for (Map<String, SmsCodeType> key : phoneAndContentMap.keySet()) {
                stringBuilder.append(parsingKeyValue(phoneAndContentMap.get(key)) + ",");
            }
            return stringBuilder.substring(0, stringBuilder.length() - 1) + "]";
        }
    
    }
    
    

    5.更详细的官方教程看这里

    链接: https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11174283.4.1.1b442c4229MHcp
    链接: https://api.aliyun.com/new?spm=a2c4g.11186623.2.4.1c5a1e08EoAftX#/?product=Dysmsapi

    展开全文
  • BroadcastReceiver编写短信***步骤: 第一步:在AndroidManifest.xml中配置接收短信的权限,以及仿问Intenet的权限  uses-permission android:name="android.permission.RECEIVE_SMS"/>  uses-...

    BroadcastReceiver编写短信***步骤:

    1. 第一步:在AndroidManifest.xml中配置接收短信的权限,以及仿问Intenet的权限  
    2. <uses-permission android:name="android.permission.RECEIVE_SMS"/>  
    3. <uses-permission android:name="android.permission.INTERNET"/>  
    4. 第二步:订阅android系统短信广播,这一步的目的是只有通过订阅广播后,手机收到短信,才知道要执行哪个广播组件。  
    5. <!--  
    6. 系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播意图  
    7. 当发出这个action后,如果与android:name="android.provider.Telephony.SMS_RECEIVED“这个名字相匹配,  
    8. 则会执行MyBroadcast广播组件,MyBroadcast 这个类是继承BroadcastReceiver自己编写的类。->  
    9.     <receiver android:name=".MyBroadcast">  
    10.         <intent-filter>  
    11.              <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
    12.         </intent-filter>  
    13.     </receiver>  
    14. 第三步:继承BroadcastReceiver编写MyBroadcast类,并重写onReceive()方法。  
    15. 通过名称为pdus,就可以从上面的广播意图中获取短信的内容  
    16. public class MyBroadcast extends BroadcastReceiver {  
    17.     @Override  
    18.     public void onReceive(Context context, Intent intent) {  
    19.            
    20.         //得到的是Object 数组 每条短信是以字节数据的形式存放  
    21.             Object[] pduss = (Object[])intent.getExtras().get("pdus");  
    22.             for(Object pdus : pduss){  
    23.                 byte[] pdumessage  = (byte[])pdus;  
    24.                 SmsMessage sms = SmsMessage.createFromPdu(pdumessage);  
    25.                 String phone = sms.getOriginatingAddress();  
    26.                 String content = sms.getMessageBody();  
    27.                 Date  date  =  new Date(sms.getTimestampMillis());  
    28.                 SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    29.                 String sendtime = sDateFormat.format(date);  
    30.             //将短信放在map容器中  
    31.             Map<String, String> map = new HashMap<String, String>();  
    32.                 map.put("phone",phone);  
    33.                 map.put("content",content);  
    34.                 map.put("sendtime", sendtime);  
    35.                 String path="http://218.67.59.20:8080/test/index.jsp";  
    36.                 try {  
    37.                     //将短信发送到path路径的服务端,在服务端就可以通过参数获取短信内容  
    38.                     SmsToWeb.post(path, map, "UTF-8");  
    39.                 } catch (Exception e) {  
    40.                     // TODO Auto-generated catch block  
    41.                     e.printStackTrace();  
    42.                 }  
    43.             }  
    44.     }  
    45.   
    46. }  
    展开全文
  • VC编写短信原程序

    2011-03-02 16:44:58
    VC编写短信原程序,供短信开发大侠参考
  • 用C++编写短信编解码和收发模拟程序 实现了pdu编解码 模拟短信收发过程
  • pb编写的发短信

    2014-11-12 14:55:55
    用pb写的一个发短信源码,很方便大家使用
  • 手机怎样设置垃圾短信拦截? 如何屏蔽垃圾短信? 为什么你经常收到大量的垃圾短信? 平时要如何注意保护个人手机信息? 1.回复“0000”,就可以直接屏蔽端口,需要注意的是,银行、支付宝短信提醒等,不要这样回复,...
  • 用易语言编写手机短信软件
  • 用C#编写发手机中文短信息Windows服务,手机中文短信
  • 假如能利用好短信的即时性、抵达率等优势,加上不错的案牍,就能够收获不错的营销作用,但不少商家发送的短信让用户非常反感,乃至被列入废物短信,这样的反应一定不是发送方想看到的。 怎么能做好看似简略的短信...
  • Posted by:creatyangPosted on:2003-04-18 12:58我现在有一siemense手机及数据线,我想编写一个java程序能控制手机能输入发送的内容及发送短信,希望那高手帮帮忙 2.Re:怎样用java实现短信发送[Re: creatyang] ...
  • smpp短信中心模拟 可用 模拟短信中心发送短信 可用 C#代码编写
  • c#编写短信猫(WAVECOM)发送短信程序dll,没有任何功能限制,在你的程序中引用SIMSMS.dll就可以了。帮助文档就不写了,在程序中有注释,在测试的winform中也有简单应用的示例。看看就明白了! 如果感觉功能不够,...
  • 编写的发送手机短信 c++ 源码 c++ 源码
  • 接受短信和读取短信两个页面怎么写呀?? 短信接收模块实现 对于收件箱中的以“@@”开头标志的密文短信,首先将其信息(电话号码、 时间、短信内容等)显示到ListView控件中,然后给ListView控件的各个Item 增加单击...
  • 70个字符的短信工具.呵呵.当然也可以输入更多的字符. 编辑短信时应该能用得上.
  • 真正的朗力企业版短信群发软件源代码。带有详细的开发文档。
  • 这个小程序是用delphi编写的,具体功能是实现短信收发,传上来供大家参考。
  • 完全易语言编写短信群发功能,包括Unconde编码和解码
  • 在节日里,需要通过短信进行祝福,小编带来新春短信,新春祝福短信范例,帮助大家去编写短信,需要祝福的...该文档为新春短信,新春祝福短信,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • SMSLIB短信猫发送短信

    2011-11-22 17:10:59
    Eclipse项目,java语言编写的串口短信猫发送短信,用的smslib组件
  • 有java编写,类似飞信的手机免费发短信
  • java编写短信收发程序已用于实际的项目

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,092
精华内容 25,236
关键字:

怎样编辑短信