Loading... <div class="tip share">请注意,本文编写于 2633 天前,最后修改于 904 天前,其中某些信息可能已经过时。</div> CommentToMail作为一款老牌Typecho邮件通知评论的插件,也有很多分支。 <!--more--> <button class=" btn m-b-xs btn-info btn-addon" onclick="window.open('https://github.com/uniartisan/CommentToMail','_blank')"><i class="fontello fontello-cogs"></i>Github 项目链接</button> <button class=" btn m-b-xs btn-success btn-addon" onclick="window.open('https://github.com/uniartisan/CommentToMail/releases','_blank')"><i class="fontello fontello-cogs"></i>戳此下载插件</button> --- **在反馈任何问题以前,请您认真查看:提问的艺术** <button class=" btn m-b-xs btn-info btn-addon" onclick="window.open('https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md','_blank')"><i class="fontello fontello-cogs"></i>How-To-Ask-Questions-The-Smart-Way</button> --- **版权申明** 1.插件原版本及作者相关信息保留在插件文件的作者信息下方 2.[PHP Mailer](https://github.com/PHPMailer/PHPMailer/) 文件来自于 GitHub 3.转载或重制请保留作者信息 ## 使用方法 1.下载插件,将插件上传到 /usr/plugins/ 目录下,修改主题模板comments.php文件,在评论form表单的适当位置添加name为receiveMail的选择框(checkbox),请注意:下方两种代码,你只能选择一个添加到主题模板文件,一般建议你选择默认接收邮件。**如果您在插件设置中开启强制忽略用户选择,您可以跳过这一步。** - 正常显示选择框: `<input type="checkbox" name="receiveMail" id="receiveMail" value="yes" checked /> <label for="receiveMail" style="padding-left:8px;">当有人回复时接收邮件提醒</label>` - 隐藏选择框(默认接受邮件): `<input type="hidden" name="receiveMail" id="receiveMail" value="yes" />` 下面我以handsome主题作为例子: ![IMG_0301.PNG][2] 选中第二个文件夹,找到comments.php ![IMG_0302.PNG][3] 定位到下图所示位置: ![IMG_0285.JPG][4] 在上图主题文件评论框的input下方插入代码即可(任意一个input都行,不过为了方便,可以添加在邮件那行下方),不过每次主题更新后可能需要重新设置。 (请注意:Handsome主题自4.1.x版本开始,增添对本插件的支持,无需再次修改文件!) ![IMG_0303.PNG][5] 设置完如上图所示,保存好文件!到这一步,你已经成功了一半。 2.后台启用相关插件 3.设置smtp服务器地址、邮箱地址、密码等信息 4.设置cron监控 监控的网址就是插件设置后台的任务执行地址加上你自己设置的Key(注意,任务执行链接不包含【 】,如:http://baidu.com/index.php/action/comment-to-mail?do=deliverMail&key=123456 将下面的代码设置成每 5 分钟运行一次即可(需要修改成自己的网址),可以使用 crontab 或者使用面板提供的定时任务功能。 ``` curl -k "https://example.com/action/comment-to-mail?do=deliverMail&key=114514" >> ./log.txt ``` ## 常见问题 1.Key是邮件任务执行密码,防止他人恶意执行任务消耗资源 2.下方任务执行地址就是说当你访问这个网址时,邮件任务才会执行,为了达到自动发送的效果,我们设置cron或者网址监控,每隔一段时间让远程服务器代替你访问任务执行网址 3.执行验证是用来调试和应对特殊环境,一般不要勾选! 4.可以清理邮件发送信息 5.QQ邮箱smtp密码需要在邮箱网页端获取,具体配置信息可以参考度娘 6.测试普通QQ邮箱可以正常发送,但可能由于腾讯反垃圾邮件逻辑,用户不能正常接受邮件,建议大家使用QQ域名邮箱,如果你没有域名邮箱,可以通过邮件联系我,或者直接在下方留言 7.本插件仅支持typecho1.0及之后版本 8.如果出现 邮件发送失败:SMTP connect() failed. (PHP>=5.6)可以参考这篇博文 https://9sb.org/45 ## 写在最后 --- **在反馈任何问题以前,请您认真查看:提问的艺术** [How-To-Ask-Questions-The-Smart-Way](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md) --- [1]: https://krait.cn/ [2]: https://blog.uniartisan.com/usr/uploads/2017/10/3483950311.png [3]: https://blog.uniartisan.com/usr/uploads/2017/10/1923621872.png [4]: https://blog.uniartisan.com/usr/uploads/2017/10/4292525936.jpg [5]: https://blog.uniartisan.com/usr/uploads/2017/10/2980327494.png [6]: https://blog.uniartisan.com/usr/uploads/2017/10/2199260941.png [7]: https://blog.uniartisan.com/usr/uploads/2017/10/2123489929.png [8]: https://blog.uniartisan.com/usr/uploads/2017/10/3967795832.png [9]: https://blog.uniartisan.com/usr/uploads/2017/10/1972513749.png [10]: https://blog.uniartisan.com/usr/uploads/2017/12/2407010643.png Last modification:June 3, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 5 If you think my article is useful to you, please feel free to appreciate
219 comments
唉,挺奇怪的,你这插件挺好我用了几年。最近服务器全盘迁移后,什么都没改动,收不到邮件,排查一番发现数据库日志是
因为已经控制变量了,参数都没改、都正确,就很奇怪。换了个插件倒是能正常发出了(完全一样的配置),但就是奇怪。
搞混了,是这个报错
已经强制勾选了邮件提醒
试试禁用插件后重新设置呢,理论上强制的话就是不判断了。
大概有方向了,是因为最近开了全部评论审核。关掉审核完全正常,开启审核就很不稳定,偶尔能发出。哪怕勾选了“强制忽略”还是可能不发出。
感谢,换了个插件是什么插件呀,能否提供链接。这个审核是typecho自带的审核设置嘛,我有时间测试一下。
也可能除了审核还有其它因素吧,但确实是想不到了。最近我只开启过自带审核,然后全盘迁移,就发现失效了。暂时用这个(https://github.com/Stitch-June/CommentPush)插件了,你的很不错,用了几年,很可惜要暂时说再见了。
已经禁用测试过多次。目前发现如果随便改个理论上不影响发信的选项,就可能导致“插件设置为不发送此类……”。有时候什么设置都不改,就直接点保存,也会影响。再改回设置,也不会恢复发送。很奇怪的问题。
用插件控制台直接调试也能发出,太怪了,翻遍设置也没找到什么导致发不出的选项
可以使用Outlook邮箱吗?
您好,只要可以用 smtp的邮箱都可以使用。
感谢大神继续开发维护插件,这个方法虽然复杂了点,也不失为一个好的解决方案!!
:) 建议收到了,在下个大版本会简化操作同时改进说明文档
您好,同时发送是正常的,每次运行会发送这段时间积攒的所有邮件通知,具体表现为会向多个评论用户发送。 SMTP connect() failed. 是一个表象错误通知,实际可能是编译的PHP不支持某些函数。
刚刚没表达清楚,我说的“经常同时发出2-3封信的情况”,是相同的邮件2-3封,也就是重复发信了。
您手动多次测试访问链接会出这个问题嘛?监控宝可能是多个节点同时访问链接,所以在造成第一个还没结束,第二个也发了。
我手动测试没有这个问题,我也感觉可能也是监控宝多节点同时访问造成的。
您可以试试在主机里的crontab里定时crul 监控网址,或者bt面板定时任务里有监控网址的功能(ฅ´ω`ฅ)
您好 我的版本是 版本 1.2 (18.10.23) PHP7.4,由于个人学业问题暂时没有时间解决这样的问题,你可以看一下phpinfo,把详细的环境post在下方,我争取在最近几个月抽时间看。
好的,那就太好了 :)
宝~可以考虑增加一些功能吗?
评论审核通知哇啥的。
我最近在准备考研,会在考研的间隙(休息的时候)适当review代码,做一些修正,也许会增加功能。(我老鸽子了,但更大的概率还是摸鱼instead of coding :)
Σ(っ °Д °;)っ欸,你也考研吗,哈哈哈哈我也正在准备中....o(////▽////)q 自己不太想去看代码,于是就提了个哈哈哈哈
~计划中是改进简化步骤,同时增加一个在线/本地双版本的垃圾评论审核模型。 愿意等的话ddl是明年三月hhh
ヾ(≧∇≦*)ゝ感谢~
4.2.9 有一个bug,在4.3.0修复了。可以去更新一下,垃圾审核模型还没有动手hhh
ヾ(≧∇≦*)ゝ来咯~
4.2.9 - 设置 - 插件CommentToMail的配置信息没有找到 - 500错误
4.2.9 有一个bug,在4.3.0修复了。可以去更新一下 https://github.com/uniartisan/CommentToMail/releases/tag/v4.3.0
我的版本是 typecho 1.2 (18.10.23) PHP7.4,不知道您的版本信息。可以把phpinfo贴在下方看一下。
感觉4,5步可以写的更简单点,原理就是访问插件添加的路由,然后执行发送邮件.不管是用命令行还是浏览器都行,我测试的时候是浏览器直接上的.
有宝塔的话可以直接搞个定时任务,内容写一行
curl -k "https://example.com/action/comment-to-mail?do=deliverMail&key=114514" >> ./log.txt
就勉强能用了.没面板命令行添加一个定时任务也行,脚本内容是一样的,百度很好找.如果流量小我觉得写在js里也没什么问题(
是滴 直接curl就好 写个sh然后crontab也好的。我下个月抽时间改一改。
你说的第4点设置cron监控,具体要怎么设置有教程吗?第5点的网址监控,现在都没有免费的了,想用第4点的设置cron监控。
如果有bt面板的话直接定时任务访问网站,cron的话你写一个sh脚本curl网址,在可以运行这个脚本的前提下,设置在crontab设置每分钟运行。
php版本是7.3 + SQLlite3.
邮件发送测试的时候功能倒很正常可以收到邮件.
但是发评论测试的时候又收不到邮件了.
数据库翻了下表"typecho_mail"发现sent一列内容全都是0但LOG全都是NULL...
实在搞不懂是啥问题了.
不知道是主题的影响还是代码插入位置会有影响?
我感觉是主题的影响,可能没有拿到评论数据。您可以先试试按我说的地方插入看看。