php实现短信发送代码


Posted in PHP onJuly 05, 2015

卓望的短信发送。PHP格式。都要不习惯用xml传输数据格式了
标签: <无>

1. [代码][PHP]代码    

<?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;
  }
 
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP学习之PHP运算符
Oct 09 PHP
基于mysql的bbs设计(一)
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
php实现MD5加密16位(不要默认的32位)
Aug 12 PHP
php计算一个文件大小的方法
Mar 30 PHP
php微信公众号开发之图片回复
Oct 20 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 #PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 #PHP
Cygwin中安装PHP方法步骤
Jul 04 #PHP
php使用Session和文件统计在线人数
Jul 04 #PHP
使用XHGui来测试PHP性能的教程
Jul 03 #PHP
编写PHP脚本过滤用户上传的图片
Jul 03 #PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 #PHP
You might like
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PDO::commit讲解
2019/01/27 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
Django验证码的生成与使用示例
2017/05/20 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
django-filter和普通查询的例子
2019/08/12 Python
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
金士达面试非笔试
2012/03/14 面试题
写好自荐信的几个要点
2013/12/26 职场文书
个性婚礼策划方案
2014/05/17 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
红歌会主持词
2015/07/02 职场文书
创业计划书之水果店
2019/07/18 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android