PHP邮件、手机短信发送

1、邮件:PHPMailer

版本: 6.0v
1、下载好了之后直接引入src文件夹和重新根目录写一个文件email.php(该文件内容使用phpmailer下载加压后的README.md里面的example代码就行)
2、socketopenssl扩展要开启
3、去邮件方获取SMTP密码,例如qq、163

    /**
     * 发送邮件
     */
    public function sendMail()
    {
        $mail = new PHPMailer(true); //  通过`true`启用例外
        try {
            //服务器设置
            $mail->SMTPDebug = 2; // 启用详细的调试输出[0:就没有email的调试信息]
            $mail->isSMTP(); // 设置邮件使用SMTP
            $mail->Host = 'smtp.qq.com'; // 指定主要和备份SMTP服务器
            $mail->SMTPAuth = true; // 启用SMTP验证
            $mail->Username = '[email protected]'; //  SMTP用户名
            $mail->Password = '*********'; // SMTP密码(例如:qq邮箱获取的,具体方法百度一下,很简单)
            $mail->SMTPSecure = 'tls'; // 启用TLS加密,`ssl`也接受
            $mail->Port = 587; // TCP端口连接

            //收件人
            $mail->setFrom('[email protected]', '习近平'); //设置发送人信息(参数1:发送人邮箱,参数2:发送人名称)
            $mail->addAddress('[email protected]', '特朗普'); // 添加收件人
            // $mail->addAddress('[email protected]'); // 名称是可选的
            // $mail->addReplyTo('[email protected]', 'Information');
            // $mail->addCC('[email protected]');
            // $mail->addBCC('[email protected]');

            //附件
            $mail->addAttachment('2.jpg'); // 添加附件
            // $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // 可选文件

            //Content
            $mail->isHTML(true); // 将电子邮件格式设置为HTML
            $mail->Subject  = '中美谈判'; //邮件主题,即标题
            $mail->Body     = '给我滚过来,敢我国的商品税?'; //邮件内容
            $mail->AltBody  = '中国是全球第一大消费市场,不怕你威胁'; //邮件附件信息,可以省略

            $mail->send();
            echo '信息已发送到白宫';
        } catch (Exception $e) {
            echo '信息发送失败. 失败原因: ', $mail->ErrorInfo;
        }
    }

2、短信:submail

第一种:CURL发送短信

1、submail第三方API官网阅读相关开发文档。
2、封装好curl请求(本地php需要开启curl扩展)
3、本地需要下载ssl证书,要在本地加入ssl证书来验证我们的身份.

1、到 sll下载证书  =>下载 cacert.pem 文件
2、把下载的cacert.pem文件放到本地或服务器的一个固定文件下,然后再去php.ini文件下搜索curl,找到curl.cainfo=,把该代码前 的 # 去掉,并把刚才存放cacert.pem文件的绝对路径放到curl.cainfo=后面,例如:curl.cainfo="D:\ssl\cacert.pem",重启服务器
现在就可以使用封装好的函数了

   /**
     * 发送短信: 使用submail第三方API
     */
    public function sendMessage($phone, $msg)
    {
        $curl = curl_init();
        $url = 'https://api.mysubmail.com/message/xsend'; //submail开发文档主URL
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POST, 1);

        $data = [
            'appid'     => '',//获取
            'to'        => $phone,
            'project'   => '',//获取
            'vars'      => '{"msg":' . $msg . ',"time":"60"}',
            'signature' => '',//获取
        ];

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        $res = curl_exec($curl);
        curl_close($curl);
        # 转成json
        $res = json_encode($res);
        return $res;
    }

第二种:SDK发送验证码

1、有50条免费短信
2、下载submail 开发文档中的SDK,解压之后,根据demo中message_xsend_demo.php 进行编写逻辑。补充:下载的SDK有demo可以参考

    /**
     * 使用submail的SDK,比上面第一种调用submail的接口方便
     * 区别于 message/send API,message/xsend 无需提交短信内容和短信签名,仅需提交你在 
     * SUBMAIL MESSAGE 应用程序中创建的短信项目的标记,并可以使用文本变量动态的控制每封短信的内容。
     */
    public function send_code_to_phone($phone, $code)
    {
        $submail = new MESSAGEXsend();
        $submail->SetTo($phone);
        $submail->SetProject('');//就是submail中获取的 project
        $submail->AddVar('code', $code);//接口文档中定义的动态变量
        $submail->AddVar('time', 60);
        $xsend = $submail->xsend();

        if($xsend['status'] !== 'success'){
            //todo... 发送失败
        }else{
            //todo... 发送成功,每天发送5次,请在60s内验证!
        }
    }

猜你喜欢

转载自blog.csdn.net/hello_sgw/article/details/81019952
今日推荐