短信发送

1. [代码][PHP]代码    

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
 
class Sms
{
     private $userId = 'XXXXX' ;
 
     private $password = 'XXXXXX' ;
 
     private $templateId = 'XXXXXX' ;
 
     /**
      * @var string 短信服务器地址
      */
     private $server_uri = 'XXXXXX' ;
 
     private $port = 'XXXXXX' ;
 
 
     /**
      * 发送短信
      * @param $message 信息内容
      * @param $mobile 手机号码
      * @param string $signature 签名
      * @return bool 成功返回true, 网络请求失败返回false, 其他返回失败编码
      */
     public function sendOneMsg( $message , $mobile , $signature = 'demo' )
     {
 
         $xml_content = $this ->createXmlContent( $message , $mobile , $signature );
 
         $xml = $this ->sendHttpRequest(trim( $xml_content ));
 
 
         if (! $xml ) {
             return false; // 网络请求失败
         }
 
         // 解析返回的编码
         $res = simplexml_load_string( $xml );
         if ( $res ->retCode == 1000) {
             return true;
         }
 
         return $res ->retCode;
 
     }
 
     /**
      * 创建 xml内容
      * @param $message 信息
      * @param $mobile 要发送的手机号码
      * @param $signature 签名
      * @return string
      */
     private function createXmlContent( $message , $mobile , $signature )
     {
         $data = array (
             'userId' => $this ->userId, // 账号
             'password' => $this ->password, // 小写的md5后的用户密码
             'templateId' => $this ->templateId, // 模板id
             'phone' => $mobile ,
             'port' => $this ->port,
             'data' => $message ,
             'signature' => $signature ,
         );
 
         // 设置xml版本和编码
         $dom = new \DOMDocument( '1.0' , 'UTF-8' );
 
         // 创建根节点
         $request = $dom ->createElement( 'request' );
         $dom ->appendChild( $request );
 
         foreach ( $data as $key => $val ) {
             // 创建元素
             $key = $dom ->createElement( $key );
             $request ->appendChild( $key );
 
             // 创建元素值
             $text = $dom ->createTextNode( $val );
             $key ->appendChild( $text );
         }
 
         return $dom ->saveXML();
     }
 
     /**
      * 发送http请求
      * @param $xml_content
      * @return mixed
      */
     private function sendHttpRequest( $xml_content )
     {
         $now = time();
         $headers [] = 'Content-Type:text/xml' ;
         $headers [] = 'Content-Length:' . strlen ( $xml_content );
         $headers [] = 'Cmd:mt' ;
         $headers [] = 'TS:' . $now ;
         $headers [] = 'Authorization:' . strtoupper (md5( $xml_content . $now . $this ->password));
 
         $ch = curl_init();
         curl_setopt( $ch , CURLOPT_URL, $this ->server_uri);
         curl_setopt( $ch , CURLOPT_HTTPHEADER, $headers );
         curl_setopt( $ch , CURLOPT_POST, 1);
         curl_setopt( $ch , CURLOPT_POSTFIELDS, $xml_content );
         curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
         curl_setopt( $ch , CURLOPT_HEADER, 0);
         $res = curl_exec( $ch );
         curl_close( $ch );
         //header('Content-Type:text/html; charset=utf-8');
         return $res ;
     }
 
}

转载于:https://www.cnblogs.com/hesitation/p/4636392.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值