even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、邮箱验证

1、利用php发送邮件首先要先开通相关的邮箱服务,以163为例

 

 2、利用composer安装phpmailer组件

 3、利用phpmailer组件发送邮件

<?php
header('content-type: text/html; charset=utf8');
ini_set('display_errors', true);
require './vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
//实例化对象
$mail = new PHPMailer();

//3.设置属性,告诉我们的服务器,谁跟谁发送邮件
$mail -> IsSMTP();                        //告诉服务器使用smtp协议发送
$mail -> SMTPAuth = true;                //开启SMTP授权
$mail -> Host = 'smtp.163.com';            //告诉我们的服务器使用163的smtp服务器发送
$mail -> From = '******@163.com';    //发送者的邮件地址
$mail -> FromName = 'bill';                //发送邮件的用户昵称
$mail -> Username = '******@163.com';                //登录到163邮箱的用户名、账号
$mail -> Password = '******';            //第三方登录的授权码,在邮箱里面设置
//$mail->SMTPDebug = 2;                 //如果有报错的情况,可以打开这个选项排错

//编辑发送的邮件内容
$mail -> IsHTML(true);            //发送的内容使用html编写
$mail -> CharSet = 'utf-8';                //设置发送内容的编码
$mail -> Subject = '这个是标题';            //设置邮件的主题、标题
$mail -> MsgHTML('这里是内容,可以是Html');//发送的邮件内容主体
//告诉服务器接收人的邮件地址
$mail -> AddAddress('457491559@qq.com');
//调用send方法,执行发送
$result = $mail -> Send();
if($result){
    echo 'ok';
}else{
    echo $mail -> ErrorInfo;
}
?>

 二、短信验证

1、选择短信发送平台(这里选用的是联容云平台做测试)

 注册容联云平台账号,登陆后进行开发文档里,下载测试Demo(这里使用测试账号)

 

 以方文件夹里存放的是php发送短信和核心代码

2、因为发送短信是需要依赖php的curl依赖,所以需要打开相关的扩展

 3、在下载的demo中有个文件SendTemplateSMS.php,可以改造该类进行发送短信使用

<?php
namespace sendMsg;
require_once('./utils/phpMsg/phpMsg.php');    //这个是自命名的CCPRestSDK.php
use phpMsg\phpMsg\REST;

class SendMsg {
    private static $instance;
    private $accountSid = '*******************';
    private $accountToken = '**************';
    private $appId = '*****************';
    private $serverIP = 'app.cloopen.com';              //测试时的地址
    private $serverPort = '8883';   //请求端口
    private $softVersion = '2013-12-26';  //REST版本号
    private $restHandle;                  //请求句柄

    private function __construct(){
        $this->restHandle = new REST($this->serverIP, $this->serverPort, $this->softVersion);
        $this->restHandle->setAccount($this->accountSid,$this->accountToken);
        $this->restHandle->setAppId($this->appId);
    }

    /**
     * @param $to
     * @param $data
     */
    public function send($to, $data) {
        //$to: 短信接收手机号码集合,用英文逗号分开,如 '13810001000,13810011001',最多一次发送200个。
        //$datas:内容数据,需定义成数组方式,如模板中有两个参数,定义方式为array('3456','123')。
        //$tempId: 模板Id,如使用测试模板,模板id为1,如使用自己创建的模板,则使用自己创建的短信模板id即可。
        $tempId = 1;
        $result = $this->restHandle->sendTemplateSMS($to, $data, $tempId);
        if($result->statusCode!=0) {
            return ['res' => 1, 'code' => $result->statusCode, 'msg' => $result->statusMsg];
        }else{
            $smsmessage = $result->TemplateSMS;
            return ['res'  => 0, 'dateCreated'=> $smsmessage->dateCreated, 'smsMessageSid' => $smsmessage->smsMessageSid];
        }
    }

    public static function get(): SendMsg{
        if(!self::$instance) {
            self::$instance = new SendMsg();
        }
        return self::$instance;
    }
}
?>    

//调用

<?php
use sendMsg\SendMsg;
header('content-type: text/html; charset=utf8');
ini_set('display_errors', true);
require_once('./sendMsg.php');
$msg = SendMsg::get()->send('157********', [10,5]);
var_dump($msg);
?>

 

posted on 2019-09-04 22:37  even_blogs  阅读(455)  评论(0编辑  收藏  举报