PHP短信群发

群发短信记录

导入excel文件
在这里插入图片描述
导入样式在这里插入图片描述HTML js代码

<script>
    $(document).ready(function(){
        $("#sendsms").click(function(){
            var res = confirm("确定发送短信");
            if(res == true)
            {
                sendsms();
            }

        });
        // 导入excel文件
         $("#exampleInputFile").change(function(){  // 当 id 为 file 的对象发生变化时
            var fileSize = this.files[0].size;
            var size = fileSize / 1024 / 1024;
            if (size > 5) {
                alert("附件不能大于5M,请将文件压缩后重新上传!");
                this.value="";
                return false;
            }else{
                $("#showPath").val($("#exampleInputFile").val());  //将 #file 的值赋给 #file_name
            }
        })
        $('#sendtime').datetimepicker({
            format:"Y-m-d H:i:s",
        });
        $.datetimepicker.setLocale('ch');
    });
    
    //插入Excel列方法
    (function($){
        $.fn.extend({
            insertAtCaret: function(myValue){
                var $t=$(this)[0];
                if (document.selection) {
                    this.focus();
                    sel = document.selection.createRange();
                    sel.text = myValue;
                    this.focus();
                }
                else
                    if ($t.selectionStart || $t.selectionStart == '0') {
                        var startPos = $t.selectionStart;
                        var endPos = $t.selectionEnd;
                        var scrollTop = $t.scrollTop;
                        $t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length);
                        this.focus();
                        $t.selectionStart = startPos + myValue.length;
                        $t.selectionEnd = startPos + myValue.length;
                        $t.scrollTop = scrollTop;
                    }
                    else {
                        this.value += myValue;
                        this.focus();
                    }
                }
        })
        
    })(jQuery)

    $('#cha').click(function(){
        var str = '{'+$('#spec').val()+'}';
            $('#charu').insertAtCaret(str);
    });

	//发送定制短信
    function sendsms(){
        // alert('adf');
        var phonestr = $('.phone').val();
        var content = $('.content').val();
        var sendtime = $('#sendtime').val();
        $.ajax({
            url: "http://"+document.domain+"/index.php/Admin/Lianxi/dinzhi_post", //请求的url地址
            dataType: "json", //返回格式为json
            data: {
                phonestr:phonestr,
                content:content,
                sendtime:sendtime,
            },
            type: "post", //请求方式
            success: function (req) {
                console.log(req);
                // console.log(req[0].message);
                var strf = '';
                var num = 0;
                //请求成功时处理
                if(req.length !=0){
                    for(var i=1;i<=req.length;i++){
                         strf += '第'+i+'条:'+req[num].message+';';
                            num++;
                    }
                    $('#fanhui').val(strf); 
                }
            },
            error: function () {
                alert('网络错误');
            }
        });
    }

	//查询余额
     $("#balance").click(function (){

        $.ajax({
            url:"http://"+document.domain+"/index.php/Admin/Lianxi/balance_post",
            dataType:"json",
            success:function (req){
                // console.log(req.message);
                if(JSON.stringify(req.message) == "{}"){
                    var str = "查询成功  "+"支付方式:"+req.payinfo+"  余额:"+req.overage+"条  总充值点数:"+req.sendTotal+'条';
                    $("#fanhui").val(str);
                }else{
                    $("#fanhui").val(req.message);
                }
            }
        });
    });

</script>

PHP代码

 	//短信接口
    public function group_sms($post_data,$url){
        $o='';
        foreach ($post_data as $k=>$v)
        {
           $o.="$k=".$v.'&';
        }
        $post_data=substr($o,0,-1);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。
        $postObj = simplexml_load_string(curl_exec($ch), 'SimpleXMLElement', LIBXML_NOCDATA);
        $jsonStr = json_encode($postObj);
        return $jsonStr;
    }


    // 导入定制短信信息
    public function dinzhisms(){
        $phones = I('phones');
        $content = I('content');
        if($content != ''){
            $strSubject = $content;
            $strPattern = "/(?<={)[^}]+/";
            $arrMatches = [];
            preg_match_all($strPattern, $strSubject, $arrMatches);
            $arr = $arrMatches[0];
        }
        
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Writer.Excel5");
        import("Org.Util.PHPExcel.IOFactory.php");
        ini_set('memory_limit','1024M');
        $id=1;
        if (!empty($_FILES)) {
            $config = array(
                'exts' => array('xlsx','xls'),
                'maxSize' => 3145728000,
                'rootPath' =>"./Public/",
                'savePath' => 'Uploads/',
                'subName' => array('date','Ymd'),
            );
            $upload = new \Think\Upload($config);
            if (!$info = $upload->upload()) {
                $this->error($upload->getError());
            }

            $file_name=$upload->rootPath.$info['photo']['savepath'].$info['photo']['savename'];
            $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));//判断导入表格后缀格式
            if ($extension == 'xlsx') {
                $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
                $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
            } else if ($extension == 'xls'){
                $objReader =\PHPExcel_IOFactory::createReader('Excel5');
                $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
            }
            $sheet =$objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow();//取得总行数
            $highestColumn =$sheet->getHighestColumn(); //取得总列数
            $list=array();
            
            for ($i = 3; $i <= $highestRow; $i++) {
                //读取的$phones.$i表坐标
                $phone_temp[$i] = trim($objPHPExcel->getActiveSheet()->getCell($phones.$i)->getValue());
                if($phone_temp[$i] != ''){
                    foreach($arr as $k => $v){
                        $address=$v.$i;
                        $cell = $objPHPExcel->getActiveSheet()->getCell($address);
                        $cvalue = $cell->getValue();
                        if($cell->getDataType()==\PHPExcel_Cell_DataType::TYPE_NUMERIC){
                            $cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat();
                            $formatcode = $cellstyleformat->getFormatCode();
                            //判断时间类型
                            if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode)) {
                                $data[$v] = gmdate("Y-m-d H:i:s", \PHPExcel_Shared_Date::ExcelToPHP($cvalue));
                            }else{
                                $data[$v] = $cvalue;
                            }
                            
                        }else{
                            $data[$v] = $objPHPExcel->getActiveSheet()->getCell($v.$i)->getValue();
                        }
                        $list[$i] = $data;
                    }
                }
            }
            $phonelist = array_filter($phone_temp);
            $phonestr = implode(',',$phonelist);
            $this->assign('phonestr',$phonestr);
            
            foreach($arr as $k => $v){
                $specs[$k] = '{'.$v.'}';
            }
            foreach($phonelist as $k => $v){
                $contentlist[$k] = '【金宝缘】'.trim(str_replace($specs,$list[$k], $content));
                $strlen += ceil(mb_strlen($contentlist[$k])/67);
            }
            $contentstr = implode(',',$contentlist);
            $this->assign('contentstr',$contentstr);

            $lena = count($list);
            $zongphone = '共计号码'.count($phonelist).'个;计费条数'.$strlen.'条';
            $this->assign('zongphone',$zongphone);
            $this->assign('lena',$lena);

            $this->assign('list',$contentlist);
        }
        $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
        $this->assign('arr',$arr);
        $len = count($arr);
        $this->assign('len',$len);

        $this->display();
    }

    //发送定制短信
    public function dinzhi_post(){
        if(!empty(I('phonestr'))){
            $phonestr = I('phonestr');
        }

        $phones = explode(',',$phonestr);

        if(!empty(I('content'))){
            $content = I('content');
        }
        $contents = explode(',',$content);
        if(!empty(I('sendtime'))){
            $sendtime = I('sendtime');
        }

        $post_data = array();
        $post_data['userid'] = 1425;
        $post_data['timestamp'] = date('YmdHis');
        $post_data['sign'] = MD5('jrcs123456'.date('YmdHis'));
        $post_data['sendTime'] = $sendtime; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值
        $post_data['extno'] = '';
        
        $url='http://60.205.151.174:8888/v2sms.aspx?action=send';
        foreach($phones as $k => $v){
            $post_data['mobile'] = trim($v);
            $post_data['content'] = trim($contents[$k]);
            $res[$k] = json_decode($this->group_sms($post_data,$url));
        }
        echo json_encode($res);
    }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值