TP-log微语添加邮件回复通知【测试版】
前言
这里代码的smtp
使用的是第三方邮件api~
代码内容参考:“关于Tp-log系统前台评论/回复邮件发错收件人的问题解决”
第一步:
这里需要在数据库tp_reply
新建一个mail
字段用来存储用户邮箱
第二步:
打开 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 />
效果图:
第四步:
不知道为什么这段 $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')];
}
总结
这是我小白瞎折腾了,其实如果只要单纯的别人评论通知自己,就没必要这么折腾,我想我回复的时候也能发送到他们邮箱这样,这只是一个测试版本
我尽力了。
效果图:
广告