酷Q机器人+HTTP API实现评论提醒发送到QQ
前几天撸了个京东云的主机 win系统,准备偶尔挂点小东西,觉得有点浪费,就试了试CoolQ机器人。效果还不错,应用插件很多,能实现很多功能,不过都不怎么感冒。准备自己写个插件结果发现自己的编程水平差得有点远,玩玩php还将就。主要是网站应用,所以搜到了CoolQ HTTP API 插件,完全的HTTP API,很熟悉的感觉。在原来邮件提醒插件的基础上加了点东西就可以让提醒消息发送到QQ,very cool!So easy!
前几天撸了个京东云的主机 win系统,准备偶尔挂点小东西,觉得有点浪费,就试了试CoolQ机器人。效果还不错,应用插件很多,能实现很多功能,不过都不怎么感冒。准备自己写个插件结果发现自己的编程水平差得有点远,玩玩php还将就。主要是网站应用,所以搜到了CoolQ HTTP API 插件,完全的HTTP API,很熟悉的感觉。在原来邮件提醒插件的基础上加了点东西就可以让提醒消息发送到QQ,very cool!So easy!
前一版1.2.4问题较多,所以做了修正,没有增加功能。
细节上的变化:
1、取消设置中的邮件主体格式设置,由插件目录下的owner.html和guest.html两个模板实现。以前是放在CommentToMail/log目录下的,现在直接发在插件目录CommentToMail/下。
2、异步请求需要socket支持,自动依次调用fsockopen,pfsockopen,stream_socket_client,当这几个函数均被禁用,本插件就完全无法工作。
3、改变了发信的模式,原来是调用外部文件实现异步发送,现在改用action,权限上好控制一些。
如果要升级插件,需要禁用以前的版本,再上传覆盖后激活使用。
当出现插件无法工作,日志文件也无法生成的情况,请尝试把插件目录下的log和cache目录权限设为777,正常的应该为755
如果错误日志提示为无法连接smtp服务器,而设置又没任何问题的,请把插件目录下的class.phpmailer.php文件中小写的‘smtp’改为大写‘SMTP’ 。这是个很怪异的问题。
如果连错误日志都没有的话,目录权限又没问题,那么就是socket部分没有执行,有可能是fsockopen不能获取http的内容,可以使用phpinfo()查看“Registered PHP Streams”一项里面是否有http。
如果要让评论者选择是否接收邮件需要在模板的comments.php文件中添加
<label><input type="checkbox" name="banmail" id="banmail" value="stop" />拒收邮件</label>
因为有些主机禁用了fsockopen函数,有些主机没配置压缩函数,所以做了点改动。在使用socket功能时,依次使用fsockopen、pfsockopen和stream_socket_client,如果三个函数都没法,基本上主机php的socket功能被禁完了。
再一个在生成缓存文件时,原来是压缩后存储的,现在改用带时间限制的加密存储,就算没发送邮件,留下的缓存文件也不会暴露邮箱等信息。
对于SSL应该跟服务器是否配置openssl等ssl功能有关。
在本地测试腾讯邮箱465端口没任何问题,gmail还没测试过。当上服务器就发不出邮件,错误是连接不上smtp服务器,搜了下找到办法,把class.phpmailer.php文件中的:
public function IsSMTP() {
$this->Mailer = 'smtp';
}
小写的smtp改为大写SMTP
public function IsSMTP() {
$this->Mailer = 'SMTP';
}
开始不信这会有差别,结果真的可以。论坛上有重新打包的CommentToMail.1.2.4.zip
下载:华为网盘,注意找:CommentToMail.1.2.4.zip
如果旧版的1.2.3能够顺利使用,不建议升级,有些小问题还有待处理。