博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php短信发送
阅读量:6416 次
发布时间:2019-06-23

本文共 2266 字,大约阅读时间需要 7 分钟。

<?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/qhorse/p/4661818.html

你可能感兴趣的文章
袋鼠云服务案例系列 | 从DB2到MySQL,某传统金融平台的互联网转型之路
查看>>
RealServer配置脚本
查看>>
九月份技术指标 华为交换机的简单配置
查看>>
马哥linux作业--第八周
查看>>
dubbo01
查看>>
python 写json格式字符串到文件
查看>>
分布式文件系统MogileFS
查看>>
电力线通信载波模块
查看>>
linux vim详解
查看>>
Java23种设计模式案例:策略模式(strategy)
查看>>
XML解析之DOM4J
查看>>
图解微服务架构演进
查看>>
SQL PATINDEX 详解
查看>>
一些常用的网络命令
查看>>
CSP -- 运营商内容劫持(广告)的终结者
查看>>
DIV+CSS命名规范有助于SEO
查看>>
js生成二维码
查看>>
C指针练习
查看>>
web项目buildPath与lib的区别
查看>>
php对redis的set(集合)操作
查看>>