7

TP-log微语添加邮件回复通知【测试版】

 3 years ago
source link: https://qq.md/posts/118
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

TP-log微语添加邮件回复通知【测试版】

1周前 (05-02) 105℃ 0赞

这里代码的smtp使用的是第三方邮件api~

代码内容参考:“关于Tp-log系统前台评论/回复邮件发错收件人的问题解决

这里需要在数据库tp_reply 新建一个mail字段用来存储用户邮箱

824a0978cc6d5149aca7f37e2c060746.png

打开 application\frontend\logi\Comment.php 添加以下代码:

     //邮件通知  
     private  function send($url){

                $ch = curl_init();
                $params[CURLOPT_URL] = $url;
                $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
                $params[CURLOPT_SSL_VERIFYPEER] = false;
                $params[CURLOPT_SSL_VERIFYHOST] = false;
                $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
                $params[CURLOPT_POST] = true;
                curl_setopt_array($ch, $params); //传入curl参数             
                curl_exec($ch); //执行
                curl_close($ch); //关闭连接 

    }

原本的微云评论没有邮箱这个选项...

修改\theme\frontend\default\t\index.html文件,在21行添加以下代码:

<div class="layui-col-md4">
<input type="text" name="mail" id="mail" class="layui-input" placeholder="* 邮箱"  value='' required />
</div>

3de8421384ebf522c791835222027bf9.png

ec1d929b5d4ff3fb084d479df939d698.png

不知道为什么这段$content = '@' . addslashes($data['poster']) . ':' . $data['content'];判断好像不行,会重复执行,我只能改2段url了..小白不懂这些...

   $date['tid'] = $data['tid'];
        $date['date'] = time();
        $date['name'] = $data['name'];
        $date['mail'] = $data['mail'];      //这段是主要的,把用户邮箱存入数据库
        if ($data['poster'] != 0 || $data['poster'] != '') {            
        $content = '@' . addslashes($data['poster']) . ':' . $data['content'];
        $date['content'] = $content;
        $username= addslashes($data['poster']);
        $date['mail'] =  Core::loadModel("reply")->where(["name"=>$username])->value('mail');
        $url="https://api.qzone.work/api/send.mail?user=邮箱账号&pass=邮箱授权码&title=您在xxx博客,微语有新的评论&content=". $date['content']."&name=微语秘书&to=". $date['mail']."";       
        }else{
        $date['content'] = $data['content'];
        $url="https://api.qzone.work/api/send.mail?user=邮箱账号&pass=邮箱授权码&title=您在xxx博客,微语有新的评论&content=". $date['content']."&name=微语秘书&to=". $date['mail']."";       
        }
        $date['ip'] = Request::instance()->ip();

        $isPost = Core::loadModel("Reply")->where(array('ip' =>Request::instance()->ip(), 'date' => array('gt', time() - 1)))->value('id');
        if ($isPost){
            return [RESULT_ERROR,"您回复的太快了,回复间隔必须大于60秒!",null];
        $result=Core::loadModel("Reply")->addObject($date);

            if($result){
            if(!Cookie::has("reply_name")){
            Cookie::set("reply_name",$date['name'],3600*365);
            }
            $where = ['tid'=>$data['tid']]; 
            $count = Core::loadModel("Reply")->where($where)->count('tid');
            $date = ['replynum'=>$count];
            $result=Core::loadModel($this->name)->where(["id"=>$data['tid']])->update($date);

            $this->send($url);              
            return [RESULT_SUCCESS, '发表成功', url('/T')];
        } 

这是我小白瞎折腾了,其实如果只要单纯的别人评论通知自己,就没必要这么折腾,我想我回复的时候也能发送到他们邮箱这样,这只是一个测试版本我尽力了。

10e9dcba5825440057b03437fc1cffc3.png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK