本文主要和大家分享php使用短信宝发送短信的方法,使用短信宝需要先在官网上注册一个用户名密码,希望能帮助到大家。
注意:如果没有购买短信,则只用来测试短信速度,短信内容不可编辑,只可修改验证码数字。。
测试操作如图:
进入正题:
使用短信宝,需要一个smsbao.class.php文件,这个文件会放在org目录下,文件内容在最下方
调用代码:
<?phpnamespace home\controller;use think\controller;use org\sms\smsbao;class indexcontroller extends controller { public function index(){
$sms = new smsbao("账号", "密码");
$msg = $sms->sendsms("1537539****", "这是一个测试短信!"); if($msg['status'] == 0) { echo '发送成功!';
} else { echo '发送失败!';
} echo $sms->getbalance(); // 返回剩余条数 }
}
访问后会显示
登录短信宝,进入请求记录会看到
如果从短信宝测试入口测试,可以在手机上看到短信,然后在官网的发送记录会看到内容
回复的话,会在回复记录中看到回复的内容
附加:
smsbao.class.php 内容
<?php// +----------------------------------------------------------------------// | smsbao for thinkphp// +----------------------------------------------------------------------// | copyright (c) 2005 http://smsbao.com all rights reserved.// +----------------------------------------------------------------------// | licensed ( http://smsbao.com )// +----------------------------------------------------------------------namespace org\sms;/** * smsbao实现类 * @category think * @package think * @subpackage sms */class smsbao { private $account;//短信包账户 private $password;//密码 private $balance;//短信剩余条数 const sendsmsurl = "http://api.smsbao.com/sms"; const querybalanceurl = "http://api.smsbao.com/query"; /** * 架构函数 * @access public * @param string $account 在短信宝注册的账户名 * @param string $password 在短信宝注册的账户名的密码 */ public function __construct($account,$password) { if (empty($account) || empty($password)) { e("用户名和密码不可为空!");
}
$this->account = $account;
$this->password = $password;
}
/** * 发送短信函数 * @access public * @param string $mobile 手机号,多个手机号用英文逗号分隔 * @param string $content 发送内容 * @return array 返回值为数组,其中status为0表明发送成功,其他情况下发送失败,失败原因为msg */ public function sendsms($mobile,$content){
$param['u'] = $this->account;
$param['p'] = md5($this->password);
$param['m'] = $mobile;
$param['c'] = $content;
$ret = self::http(self::sendsmsurl, $param);
$data['status'] = $ret;
$data['msg'] = $ret == 0 ?'发送成功' : self::getresult($ret); return $data;
}
/** * 获取短信剩余条数函数 * @access public */ public function getbalance(){
$param['u'] = $this->account;
$param['p'] = md5($this->password);
$ret = self::http(self::querybalanceurl, $param);
$retarr = split("\n", $ret);
$balancearr = split(",", $retarr[1]);
$this->balance = $retarr[0] == 0 ? $balancearr[1] : self::getresult($ret); return $this->balance;
} /** * 发送http请求 * @access protected * @param string $url 请求地址 * @param string $param get方式请求内容,数组形式,post方式时无效 * * @param string $data post请求方式时的内容,get方式时无效 * @param string $method 请求方式,默认get */ protected static function http($url, $param, $data = '', $method = 'get'){
$opts = array(
curlopt_timeout => 30,
curlopt_returntransfer => 1,
curlopt_ssl_verifypeer => false,
curlopt_ssl_verifyhost => false,
);
/* 根据请求类型设置特定参数 */ $opts[curlopt_url] = $url . '?' . http_build_query($param);
if(strtoupper($method) == 'post'){
$opts[curlopt_post] = 1;
$opts[curlopt_postfields] = $data;
if(is_string($data)){ //发送json数据 $opts[curlopt_httpheader] = array( 'content-type: application/json; charset=utf-8', 'content-length: ' . strlen($data),
);
}
}
/* 初始化并执行curl请求 */ $ch = curl_init(); curl_setopt_array($ch, $opts); $data = curl_exec($ch);
$error = curl_error($ch); curl_close($ch);
//发生错误,抛出异常 if($error) throw new \exception('请求发生错误:' . $error);
return $data;
} private function getresult($key){
$rst['30'] = '密码错误';
$rst['40'] = '账号不存在';
$rst['41'] = '余额不足';
$rst['42'] = '帐号过期';
$rst['43'] = 'ip地址限制';
$rst['50'] = '内容含有敏感词';
$rst['51'] = '手机号码不正确'; return $rst[$key];
}
}
以上就是php使用短信宝发送短信的方法的详细内容。