Loading... *20200119更新* **官方开发人员对最新开发版适配了异步回调** https://joyqi.com/typecho/typecho-async-service.html *下载地址* https://joyqi.com/usr/uploads/2017/11/3224167191.gz **CommentToMail v4.1 现已发布** ![QQ截图20171005232940.png][1] <!--more--> 详情查看`作者博客` https://blog.uniartisan.com/archives/CommentToMail.html *下载地址* https://blog.uniartisan.com/app/CommentToMail.tar.gz 早期版本中邮件发送失败一个很重要的原因是,异步触发失败导致邮件不能发送,而CommentToMail v4.1另辟蹊径,采用网站监控程序触发的方式发送邮件,实在是高明 *使用方法* 正常设置插件后,设置key ![QQ截图20171005233042.png][2] 完整地址写入网站监控(此处使用360网站监控) ![QQ截图20171005233015.png][3] 默认每10分钟触发一次,每10分钟将之前的右键发送一次 ![QQ截图20171005233004.png][4] 监控的同时正常接受邮件 ![QQ截图20171005232940.png][1] **CommentToMail typecho 2017版** bug修复&下载地址 https://www.xlogs.cn/archives/49/ *SOCKET请求错误后转入CURL方式* if ($fp === false) { //self::saveLog("SOCKET错误," . $errno . ':' . $errstr); // Socket请求失败,使用Curl self::curl($url); return false; } *CURL方式关闭证书验证以兼容QQ邮箱等安全级别不够的邮箱* public static function curl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 将curl_exec()获取的信息以文件流的形式返回,不直接输出。 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); // 连接等待时间 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_TIMEOUT, 1); // curl允许执行时间 self::saveLog("Curl 方式发送\r\n"); curl_exec($ch); curl_close($ch); self::saveLog("请求结束\r\n"); } ![TIM截图20170610234519.png][5] Typecho 上使用最广泛的插件是 CommentToMail,最早由 [DEFE][6] 开发,后来由 [Byends Upd][7] 接手。该插件通过常用的 PHP Mail,SendMail 或者 SMTP 来发送邮件 同时[lan tian][8] 制作了基于 Mailgun 云邮API 的 Typecho评论插件分支 ![TIM图片20170610233406.png][9] *下载地址* [百度云][10] `已更新` 为什么不用github?因为我不是作者,我会通知作者更新到他的github *更新了什么?* 博主我的插件用着明明没问题,你更新了啥? 详情可以点击这里 [邮件发送失败:SMTP connect() failed. PHP>=5.6][11] 当我们使用QQ邮箱(非企业邮箱)的时候会发现邮件发不出去,修复了此bug 更新了PHP Mailer版本 关闭了使用SMTP发信的证书认证(QQ邮箱证书加密级别太低) 修改了插件说明(如果这也算的话。。) *支持的版本范围* typecho 0.9 1.0 1.1 开发版(2017-6-11) php5.4 5.5 5.6 7.0 7.1 *为什么要用加密邮箱发送邮件通知?* 正常SMTP协议使用的是25端口,但是由于垃圾邮件泛滥,25端口普遍被拦截,因此才使用465的加密SMTP端口 *设置图* 465端口 ![TIM截图20170611000740.png][12] QQ邮箱需要使用授权码而非QQ登录密码 ![TIM截图20170611000856.png][13] *环境BUG* 如果你使用这个插件依然不能发送邮件,那么恭喜你,我把坑都踩完了。。 两种情况 1.测试邮件不能发送 smtp端口465 用户名 授权码 ssl加密勾选 邮件是否进入垃圾桶(使用QQ邮箱好处就是不用进垃圾桶,例如100@qq.com这种) 上源码,插件使用fsockopen,pfsockopen,stream_socket_client三种方式发送邮件,检查对应函数是否被禁止 if (function_exists('fsockopen')) { $fp = @fsockopen ($scheme . $host, $port, $errno, $errstr, 30); } elseif (function_exists('pfsockopen')) { $fp = @pfsockopen ($scheme . $host, $port, $errno, $errstr, 30); } else { $fp = stream_socket_client($scheme . $host . ":$port", $errno, $errstr, 30); } 2.测试邮件能发送,但是回复不能触发 同上,检查函数是否被禁用 更大的可能性,这是环境配置问题 如果你是用的是`宝塔面板`,那么宝塔面板的PHP7.0由于编译问题,函数是无效的。。 请换用PHP7.1或5.6即可 *细节* 我想知道博主你改了什么,我不放心你的插件,我自己改改可以吗 讨论过程 ![TIM截图20170611001755.png][14] 此次插件修改是lan tian全权指挥,简称云修改???(没毛病) 在`Action.php`的`sendMail()`函数中,在 $mailer->SetFrom($this->_email->from, $this->_email->fromName); $mailer->AddReplyTo($this->_email->to, $this->_email->toName); $mailer->Subject = $this->_email->subject; $mailer->AltBody = $this->_email->altBody; $mailer->MsgHTML($this->_email->msgHtml); $mailer->AddAddress($this->_email->to, $this->_email->toName); 这么一大段后插入: $mailer->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); CommentToMail 自带的 `PHPMailer` 太老了,所以加上参数没用。 CommentToMail 的 `lib` 文件夹里有三个php文件,把它们用 https://github.com/PHPMailer/PHPMailer 上的对应的三个php 在`class.phpmailer.php`开头加上: require_once 'class.smtp.php'; require_once 'class.pop3.php'; CommentToMail 用了异步触发,就是访客回复时,插件会自己去访问自己的一个页面,然后被访问的那个页面发信。 异步触发中很多步骤都可能出问题,比如php无法访问到网站本身,或者执行到一半关闭连接时发送邮件的程序被关了。这些问题涉及到具体环境配置 *完毕* [1]: https://9sb.org/usr/uploads/2017/10/533439491.png [2]: https://9sb.org/usr/uploads/2017/10/488689613.png [3]: https://9sb.org/usr/uploads/2017/10/3195750627.png [4]: https://9sb.org/usr/uploads/2017/10/3510713250.png [5]: https://9sb.org/usr/uploads/2017/06/3427343793.png [6]: http://defe.me/ [7]: http://www.byends.com/ [8]: https://lantian.pub/article/modify-website/mailgun-typecho-comment-email-notification.lantian [9]: https://9sb.org/usr/uploads/2017/06/2355119049.png [10]: https://pan.baidu.com/s/1jIxeveI [11]: https://9sb.org/45 [12]: https://9sb.org/usr/uploads/2017/06/1645122633.png [13]: https://9sb.org/usr/uploads/2017/06/22197106.png [14]: https://9sb.org/usr/uploads/2017/06/2374651048.png 最后修改:2020 年 01 月 19 日 05 : 51 PM © 允许规范转载
奇怪的bug,游客收不到消息,查看日志提示:
插件设置为不发送此类邮件或被评论访客拒收邮件!
尝试过开关主题内自带的开关,没用...
设置里看起来也没问题
测试邮件可以正常接收
好迷啊
用开发版和官方的邮件插件试试
版本 1.1 (17.10.30)
Mailer 无法在此版本的typecho下正常工作
用开发版和官方的插件。
好的,谢谢大佬
对不起,插件目录不可写,无法正常使用此功能
所以解决办法就是给插件目录增加写入权限
给了777
chmod -R 777 网站目录/usr/plugins/
Typecho 版本低,无法使用
您好我的博客更换了域名从zhiyuanyun.cc换成了https://blog.uniartisan.com/archives/CommentToMail.html
麻烦您更改一下链接OωO
吼啊吼啊ヾ(≧∇≦*)ゝ
挺好的,一直在用这个插件
测试发送邮件500是什么原因阿???
开发版的typecho可以用第一个官方的插件,正常开启伪静态就行了。
想问下 【该网页无法正常运作, 目前无法处理此请求,HTTP ERROR 502】 发送测试邮箱出现的这种情况属于什么问题呢?
我换了文件也是报这个错
用lovekangkamg那个插件吧
哈哈,趁着有时间更新插件到4.1.1
下载地址 https://blog.zhiyuanyun.cc/app/CommentToMail.tar.gz
更新日志
https://blog.zhiyuanyun.cc/
虽然老版本回复时邮件通知多加载了两秒,但我还是懒得换了。
最新的开发板已经支持异步回调,可以考虑接入官方的异步回调
https://joyqi.com/typecho/typecho-async-service.html
可是我不会
哇……整了好久4.0版本一直失败 换了2.版本可以了…………难受(╯﹏╰)
https://blog.zhiyuanyun.cc/archives/CommentToMail.html
你可以看看这个
怎么可能!哇啊啊啊啊啊!
我自己用没问题的呀,你是卡在哪一步?可以回复我,我在博客中修正....
并 不难
https://blog.zhiyuanyun.cc/archives/CommentToMail.html
这是我在另一个分支上进行修改的....
版权信息在插件文件中保留。这个是网址监控运行,不存在兼容性问题
我觉得OK 已更新
邮件发送失败:SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
遇到同样问题
https://www.xlogs.cn/archives/49/
修复https下评论无法通知的问题
感谢大佬,文章已更新
哇,竟然把阿里云的企业邮箱的坑修复了,终于不再提示stmp connect error了
我试了一下,同样是http://www.bowen-blog.com/index.php/action/comment-to-mail?send=xxxxx访问这个网址,邮件能正常发出去,但是评论时就发不了。看了日志,发现能正常触发(因为我在socket函数里打印出一些东西来,说明是执行了这个函数的)。就不知道为什么发不了邮件
https://blog.zhiyuanyun.cc/archives/CommentToMail.html
你可以看看这个!
其实我之前自己搞成功了,改成同步触发就行。
只能解释环境问题,不能异步触发
不能异步触发是啥意思呢?有没有其他解决方法?
使用原版程序,原版主题,能够发送即为正常。
直接访问这个链接或者后台测试,是同步触发,评论后发送邮件是异步触发,邮件和评论不是用一时间完成的
楼主你的空间和域名是在哪里买的?
https://9sb.org/38 域名是爱名网收的短域名
那主机呢?自己搭的?
看本博客的其他文章
插件一用cdn就不行,大佬知道是什么原因吗
邮件发送失败:SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
博主这个问题怎么解决?
= = 是服务商禁用了fsockopen()函数
谢谢分享 2017年8月2日16:28:01 测试可用 ^_^
你好,我用的是企鹅的企业 邮箱,启用了SSL,测试邮件可以发送,评论后不自动发邮件。我去看了下日志,显示如需哦啊:2017-07-31 17:44:14 开始发送请求:https://zhengshun.wang/action/comment-to-mail?send=Q3bqNUK
SOCKET错误,0: 但是我手动在地址栏访问这段url就可以发送邮件,不知道哪出问题了,望抽时间回复一下!谢谢
这个问题是因为在服务器本地无法用这个域名直接访问你的博客(域名绑定设置有问题),而你手动在远程访问这个UEL链接当然就能触发邮件发送了。
问题原因是,网站启用了https ,服务器直接curl 调用https会报错。改成http就好使了。这个问题不知道怎么解决,网址又不想去掉https。。。
SSL证书绑定正确了?如果是HTTPS站点需要在CommentToMail 开启 SSL加密。
已经开启ssl了,最终问题是我网站ssl证书弄错了,导致curl识别报错。nginx版的我给写成apache的了。晕死
环境问题,无法解决
会不会 SSL的问题?我自己的VPS,环境问题我可以自己调,麻烦帮看一下!
测试邮件可以发送后,邮箱和程序就不存在问题了。这是异步触发的问题,这个问题解决不了
为啥我这里提示“对不起,插件目录不可写,无法正常使用此功能”,我给插件目录设置的是755权限(我用的是 ispconfig 面板)
好使,装完稍微调试了下ok了,
没有权限写,你要确认下你上传的插件目录 属主和属组 的权限是否正确,再者就是目录的权限,要递归下权限
给777都不行好不
我的刚放进去启用也提示插件目录不可写,我只改了文件夹的属主和属组就完事了,就没改读写权限
请问你是怎么改的?请具体点,我是新手,万分感谢
用户和组全都是面板默认的了,不可能是没权限啊,已经 chown -R 和 chgrp -R 一遍了
程序不会判断失误,没有权限就是没有权限
成功一次然后就不行了,腾讯企业邮箱SMTP Error: data not accepted.SMTP server error: DATA END command failed Detail: Connection frequency limited
SMTP code: 550
官方 http://service.mail.qq.com/cgi-bin/help?subtype=1&id=20022&no=1000722
发送失败阿。。
2017-07-10 18:59:46 开始发送请求:http://www.nothamor.cn/index.php/action/comment-to-mail?send=JJ0QCN8
Socket 方式发送
请求结束
参考环境bug 以及使用cdn的情况
emmm,已经参考了环境BUG,都没有问题,至于CDN,我用了百度云,应该是不会有什么影响的吧,到socket方式发送这里就请求结束了是正常就是这样还是socket错误的原因?是kangle的环境
我用宝塔而你用kangle,那就可以认为是kangle有问题;我没有cdn而你又,那就可以认为CDN有问题,这就叫环境bug。不是都没有问题,而且都可能有问题
请问如何解决呢?手动访问也是可以的……ssl我用的是宝塔一件申请的,PHP7.1……
我也是宝塔,PHP7.1,但是还是有问题,您能远程看一下吗?
QQ 1297867985 李小虾
不能
后台测试发送邮件没问题,回复就不能发送。
日志提示SOCKET错误,网站使用了魔门云SSL,亲测不开启ssl回复就能发送成功
用CDN ssl的情况没有考虑过,但是用httpCDN如果发不出去可以考虑在VPS上绑定域名hosts 域名/ip
ok,晚上看看
感谢已发信成功
邮件发送失败:SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
怎么破
解决了
邮件发送失败:SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
这个问题
sendmail无法发送嘛,提示Could not execute: /usr/sbin/sendmail -t -i
这很正常啊,sendmail是个运行在linux上邮件程序,你需要自己装
sendmail应该装的,探针里测试能发信的。用的oneinstock一键包
本文仅解决smtp发信相关问题,其他问题请自行搜索解决
测试能发送,评论不能发送,日志:“开始发送请求:https://www.*.*/action/comment-to-mail?send=***
Socket 方式发送
请求结束”
用的是oneinstack环境配置包,我的天typecho发送邮件为什么比wordpress难...
我也是这个BUG,真是受够了...
我是Nginx+Apache,难道是这个原因?
参考“环境bug" 这实际上是环境的问题 而且这个插件是异步加载,对于评论没有等待时间
为毛我测试的时候可以收到消息,但是实际到文章评论的时候就不能用了,有点蛋疼啊,用的163的域名邮箱服务
参考环境bug2 插件开启日志记录,在log能看到日志,如果提示sock错误,那是php组件的问题,换个版本编译试试