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 == ) {
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, );
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_content);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, );
curl_setopt($ch, CURLOPT_HEADER, );
$res = curl_exec($ch);
curl_close($ch);
//header('Content-Type:text/html; charset=utf-8');
return $res;
}
}
php短信发送的更多相关文章
- PhpSms 稳定可靠的php短信发送库
可能是目前最聪明.优雅的PHP短信发送库了.从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供. GitHub地址:http ...
- C#利用Web Service实现短信发送(转)
通过编程方式实现短信息的发送对很多人来说是一件比较烦杂的事情,目前一般的解决方法是通过计算机和手机的连线,通过可对手机编程的语言编写相关的手机短信息程序来实现,而这种方法对于一般人来说是很难达到的,因 ...
- [工具开发] 一信通 Web 短信发送客户端
一.简介 为了协助公司运营部对几家短信平台进行测试,我根据各自的接口文档编写了几个简单的短信发送客户端: 下面是一信通 Web 短信发送客户端,使用 HTTP GET 方法. 二.效果图 1. 首页 ...
- Android短彩信源码解析-短信发送流程(三)
3.短信pdu的压缩与封装 相关文章: ------------------------------------------------------------- 1.短信发送上层逻辑 2.短信发送f ...
- C# 编写短信发送Window服务
我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...
- 使用飞信api接口实现短信发送(只能发送好友)
找了很久才找到一个能用的飞信API接口(http://quanapi.sinaapp.com/fetion.php?u=飞信登录手机号&p=飞信登录密码&to=接收飞信的手机号& ...
- 功能:使用QQ号登陆,并加上微信和短信提醒,是否增量备份可选,阿里大鱼短信发送开发与测试,聚合数据(用JSON发短信,比较清楚)
微博就可以,所以其它软件也可以http://desktop.weibo.com/ http://blog.csdn.net/jueblog/article/details/14497181http:/ ...
- Android短彩信源码解析-短信发送流程(二)
转载请注明出处:http://blog.csdn.net/droyon/article/details/11699935 2,短彩信发送framework逻辑 短信在SmsSingleRecipien ...
- Swift - 短信发送功能的实现
使用MessageUI.framework框架可以实现短信发送功能,步骤如下: (1)首先判断设备是否有发送短信功能 (2)如果设备允许发送短信,创建一个MFMessageComposeViewCon ...
- c#简单易用的短信发送服务 悠逸企业短信服务
悠逸企业短信发送服务,是一种比较简单易操作的短信发送服务,使用POST的方式,请求相应地址就可以实现短信发送功能 1 /// <summary> /// 短信发送服务 /// </ ...
随机推荐
- 用css3制作旋转加载动画的几种方法
以WebKit为核心的浏览器,例如Safari和Chrome,对html5有着很好的支持,在移动平台中这两个浏览器对应的就是IOS和Android.最近在开发一个移动平台的web app,那么就有机会 ...
- JS闭包(转载加整理)
原文地址:http://www.jb51.net/article/24101.htm 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量 ...
- JS 内部传参
- MyEclipse代码提示快捷键和常用设置
我使用的是MyEclipse 6.0版本,代码助手(content assist)的快捷键由 Alt + / 改成了 Ctrl + Space,恰好我的输入法快捷键也是 Ctrl + Space .造 ...
- WPF 注册全局快捷键
.NET技术交流群 199281001 .欢迎加入. using System; using System.Collections.Generic; using System.Linq; using ...
- intel 系列的PC机处理器是大端的还是小端的?
intel 系列的PC机处理器是大端的还是小端的?由于要安装oracle,需要知道是大端机器还是小端的,你好,现在流行的PC,是微型处理器,也就是所谓的小端处理器. 大端处理器是由若干个微型处理器有机 ...
- seajs+spm之再研究
好久没有用seajs了,之前对spm也只是一知半解,这些天再次拿起来研究.谈谈我的认识与理解. 声明:本文不适合对seajs完全不了解的同学阅读.对于想知道seajs来龙去脉以及spm相关的同学&qu ...
- [整] JavaScript m选n组合算法
01转换法: 思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组元素值 ...
- 备份还原mysql数据库
Windows下cmd命令行中备份还原mysql数据库 先cmd 上cd 到mysql的安装bin目录下,然后再运行下面的命令. 例如:cd C:\Program Files\MySQL\MySQL ...
- Android学习笔记之打钩显示输入的密码
利用EditText作为密码输入框是个不错的选择(只需设置输入类型为textPassword即可),保密且无需担心被盗取.但有时用户也不知道自己输入的是否正确,这时就应该提供一个“显示密码”的复选框, ...