缘起

先是看到了@桜庭夜 在一篇博文上写到了使用LoveKKComment实现了评论回复邮件提醒

才一敲脑袋,哦豁,好像还真忘了这个功能,遂又是一个不休的夜晚

 LoveKKComment

LoveKKComment是一款Typecho邮件通知类插件,支持SMTP、Send Cloud、阿里云邮件推送三种邮件通知方式。然而我这里安装配置之后,一点儿反应都没有,转而投向Aria主题所原生支持的CommentToMail,然而却又是个大坑。

CommentToMail4.1.2

首先可以通过这篇博文来了解一下背景,安装,配置的一些内容,在这就不用重复介绍了

【更新】CommentToMail typecho2017&v4.1& Mailer三版本,支持php5.6/7,插件详解

下载

Uniartisan博主的域名到期了,然而资源也随之消散。。。不由得想想这些博客的今后,引人深思博主终于活了,别去下面了

在网上转悠了一大圈后,不用找了,在这下吧,来源pc6a,说的我有些慌啊..请分辨以后在使用吧

CommentToMail 4.1.2

Aria主题的适配

安装,配置邮件服务器,测试邮件发送成功后,便到了模拟测试评论回复的环节。

然而不幸的是,尽管每次都没有返回邮件发送失败的消息,但只有博主能够收到评论的邮件,评论者并不能收到被回复的邮件提醒!!!

开启邮件发送日志,发现插件设置为不发送此类邮件或被评论访客拒收邮件!,一路追根溯源,逼着对前端一无所知的我阅读PHP源码才发现了在Plugin.php这块:

//是否接收邮件
if (isset($_POST['receiveMail']) && 'yes' == $_POST['receiveMail']) {
    $cfg['banMail'] = 0;
} else {
    $cfg['banMail'] = 1;
}

然而主题中不接收回复邮件通知按钮的元素名为banmail,所以应改为

//是否接收邮件
if (isset($_POST['banmail']) && 'stop' == $_POST['banmail']) {
    $cfg['banMail'] = 1;
} else {
    $cfg['banMail'] = 0;
}

其实到之后才发现在早期CommentToMail 2.0.1里便是如此= =,这才是原来的逻辑

定时推送

当然可以通过阿里,大数字等的网络监控服务来实现。然而阿里云的监控服务我找了半天都没找到(太难找了,在这里)...大数字当然是要pass掉了。作为一个有VPS的人何必靠别人来推一手呢(手动滑稽),Linux里面有个特好用的Crontab

在终端输入:

crontab -e

i在末尾添上一行(注意改动)

*/30 * * * * curl "https://123.com/action/comment-to-mail?do=deliverMail&key=[yourKey]"

Esc,再键入:wq即可保存设置

这样一来就可以实现每30分钟来启动一次邮件队列发送(小站就怠惰一些吧

这个链接正常返回都是

{"result":true,"amount":0,"success":{"amount":0,"id":[]},"fail":{"amount":0,"id":[]}}

切记一定要在链接两端填上双引号",要不然就会像我一样卡在{"result":0,"msg":"No permission"}上半小时不得其解。原因大概就处在这"?=""&"这些神奇的字符上面吧。

冲突依旧

评论插件SmartSpam

这次又是之后才发现的大问题,便是待审评论即使通过了也不能够发送邮件,依然是那句插件设置为不发送此类邮件或被评论访客拒收邮件!

又是一个下午的分析之后才发现,原来是这个版本的CommentToMail在发表评论之时就会标注评论状态,然后记录到mail表里,即使之后通过了,但是mail表里邮件序列里评论的状态就没变!

之前的版本是直接读的Comment表所以不会出现这样的状况。啊啊,想改写这个插件了,明明还有这么多Bug!然而面对这PHP(坠吼的语言)又下不去手= =,最近也较忙,有空再折腾吧(再折腾我就得挂科了,剁手!!

冲突解决

Update:2019.08.26
每次颜文字表情都会被审核导致发不出去,怎么能忍?
没想到今天看着文档顺手就解决了。。。
https://github.com/uniartisan/CommentToMail/pull/1
发现原博主的博客也活了,就提个PR吧