TP-log微语添加邮件回复通知【测试版】
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.
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 />
</div>
不知道为什么这段$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')];
}
这是我小白瞎折腾了,其实如果只要单纯的别人评论通知自己,就没必要这么折腾,我想我回复的时候也能发送到他们邮箱这样,这只是一个测试版本
我尽力了。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK