typecho邮件提醒插件:Comment2Mail

项目介绍

star

Typecho博客评论通过时发送邮件提醒
插件源码: https://gitee.com/HoeXhe/typecho-Comment2Mail

更新说明

ps 更新需重新启用并配置插件

  • version 1.3.0 新增配置测试功能,验证配置是否能正常发信
  • version 1.2.1 如果是自己回复自己评论的, 不接收邮件
  • version 1.2.0 如果所有评论必须经过审核, 通知博主审核评论
  • version 1.1.1 邮件里显示评论人邮箱
  • version 1.1.0 修改了邮件样式,邮件样式是utf8,避免邮件乱码
  • version 1.0.1 博主回复别人时,不需要给博主发信

软件架构

typecho版本为0.8 (10.8.15)以上 (理论是支持所以版本)
php: >=5.5.0
如果启用SMTP加密模式PHP需要打开openssl扩展
邮件服务基于PHPMailer

安装教程

下载本插件,解压放到/usr/plugins/目录中
文件夹名改为Comment2Mail
登录管理后台,激活插件
配置插件 填写SMTP参数 QQ邮件SMTP配置说明 新浪配置 阿里云邮件配置 网易163邮件配置

2019-06-10_093359.png

常见问题

⭕️ 1. PHPMailerPHPMailerException: SMTP connect() failed. SMTP连接失败,请检查配置项

  • 检查邮箱配置: SMTP服务器地址 用户名 密码 端口是否正确
  • 检查运行环境: php 版本是否符合要求 或 openssl 扩展是否开启

⭕️ 2. 如配置项正确, 还是无法发信

服务器安全组策略把端口(465, 587)禁用了, 在服务器管理后台开启即可

联系作者

Email:i@hoehub.com

typecho

我来吐槽

*

*

已有 174 条评论

  1. 泽泽

    typecho1.2大佬可以适配下了😆,目前测试站长登录后回复评论报错,其他倒是正常

  2. cell

    大兄弟 插件测试可以正常发送 但是勾选了日志没有生成log.txt 什么原因啊 PHP代码也搞不懂。😂

    1. Hoe

      可能是没有写入权限

      1. cell

        已经搞定了,插件很耐用 。😂😂😂

        1. Hoe

          😀感谢支持

  3. 陈小儒

    测试发信报错,一直请稍等,腾讯企业邮箱,换成QQ的也一样。设置了独立密码,放行了端口,服务器为宝塔面板默认配置。
    后台报错记录:
    2021/05/07 03:46:48 [error] 4160#0: *1268 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 42.57.50.136, server: cxr.cool, request: "GET /comment2mail/test?_=936c5aebef4ca36477e6fb63d015d09e&STMPHost=smtp.exmail.qq.com&SMTPUserName=cxr%40cxr.cool&SMTPPassword=【手动打码】&SMTPSecure=ssl&SMTPPort=465&fromMail=cxr%40cxr.cool HTTP/2.0", upstream: "fastcgi://unix:/tmp/php-cgi-56.sock:", host: "cxr.cool", referrer: "https://cxr.cool/admin/options-plugin.php?config=Comment2Mail"

    1. Hoe

      我也不清楚这是什么问题, 查了一下说是nginxphp-fpm 间的通信出现了问题,通常是 php-fpm 由于超时等原因终止导致 nginx 未收到有效回应。你可以尝试调整你的 php 配置。

      1. 陈小儒

        大佬。。。我换了Apache 2.4.46还是有问题。。。我都蒙了。。。能加微信帮忙看一下是哪里的问题吗 ?
        失败,请检查配置项~
        PHPMailerPHPMailerException: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting in /www/wwwroot/cxr.cool/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php:1758
        Stack trace:

        0 /www/wwwroot/cxr.cool/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1513): PHPMailerPHPMailerPHPMailer->smtpSend('Date: Fri, 7 Ma...', '5rWL6K+Vrn')1 /www/wwwroot/cxr.cool/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1352): PHPMailerPHPMailerPHPMailer->postSend()2 /www/wwwroot/cxr.cool/usr/plugins/Comment2Mail/Action.php(62): PHPMailerPHPMailerPHPMailer->send()3 /www/wwwroot/cxr.cool/var/Typecho/Router.php(138): Comment2Mail_Action->action()4 /www/wwwroot/cxr.cool/index.php(23): Typecho_Router::dispatch()5 {main}

        保存设置

        1. Hoe

          检查邮箱账号密码端口配置,SMTP连接失败了

          1. 陈小儒

            都重新设置了,还是不行,测试一直在请稍等,快半个小时了,没变化了。。。

  4. 花香楼

    好的,谢谢指导。

  5. 夏目贵志

    在提供一个样式吧!效果图如下:

    记得添加下面代码

        /**
         * 获取文章标题
         * @param $cid 文章ID
         * @return mixed
         * @throws Typecho_Db_Exception
         */
        private static function title($cid)
        {
            $db = Typecho_Db::get();
            $widget = new Widget_Abstract_Contents(new Typecho_Request(), new Typecho_Response());
            // 查询
            $select = $widget->select()->select('title')->where('cid' . ' = ?', $cid)->limit(1);
            $article = $db->fetchRow($select, [$widget, 'push']); // 获取文章
            return $article->title;
        }
        

    这里是样式

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
    </head>
    <body>
    
    <div id="mailContentContainer" class="qmbox qm_con_body_content qqmail_webmail_only" style="">
    <style type="text/css">.qmbox .qmbox style, .qmbox .qmbox script, .qmbox .qmbox head, .qmbox .qmbox link, .qmbox .qmbox meta {display: none !important;}.qmbox .biaoqing {margin: 0 .25em;vertical-align: bottom;height: 2em;}.qmbox .emailz{background-color:white;border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;width:500px;margin:35px auto;color:#555555;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;font-size:14px;}@media (max-width:767px){.qmbox .emailz{width: 88%;}}</style>
    <div class="emailz">  
    <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"><span style="color: #12ADDB;font-weight: bold;">&gt; </span>在<a style="text-decoration:none;color: #12ADDB;" href="{$comment->permalink}" target="_blank" rel="noopener">《{$comment->title}》</a>中,您有一条新的回复</h2>
            <div style="padding:0 12px 0 12px;margin-top:18px">  
                <p>时间:{$commentAt}</p>  
                <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0">{$commentText}</p>  
                <p>评论者:<span style="color: #12ADDB;">{$comment->author}</span></p>  
                <p style="background-color: #f5f5f5;border: 0px solid #DDD;padding: 10px 15px;margin:18px 0"> <a target="_blank" rel="noopener">{$comment->mail}</a></p> 
                <p>您可以点击 <a style="text-decoration:none; color:#12addb" href="{$comment->permalink}" target="_blank" rel="noopener">查看回复的完整內容 </a>,欢迎再次光临 <a style="text-decoration:none; color:#12addb" href="{$options->siteUrl}" target="_blank" rel="noopener">{$options->title}</a>。</p>  
            </div>  
    </div>
    </div>
    </body>
    </html>

  6. Mr.Chou

    已经成功了,确实是配置授权码错了,重新设置就好了😁

    1. Hoe

      值得注意的是,邮箱密码不是QQ密码,很多人都搞错了

  7. Thanos

    博主有个问题,想请教一下,就是咱们这个插件怎么更改邮件发送模板阿?

    1. 夏目贵志

      这是简单修改的评论样式,一样是简洁的~

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
      </head>
      <body>
      
      <div style="border-radius:10px;font-size:13px;color:#555;width:666px;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB','微软雅黑','Microsoft Yahei',Tahoma,Helvetica,Arial,SimSun,sans-serif;margin:50px auto;border:1px solid #eee;max-width:100%;background:#fff repeating-linear-gradient(-45deg,#fff,#fff 1.125rem,transparent 1.125rem,transparent 2.25rem);box-shadow:0 1px 5px rgba(0,0,0,.15)">
                     <div style="width:100%;background:#3FBFFF;color:#fff;border-radius:10px 10px 0 0;height:66px">
                                    <p style=" font-size:15px;word-break:break-all;padding:23px 32px 23px 32px;margin:0;background:url(#) no-repeat;border-radius:10px 10px 0 0 ">您在 [<a href="{$options->siteUrl}" style="text-decoration:none;color:#fff" target="_blank" rel="noopener">{$options->title}</a>] 的评论有了新的回复!</p>
                     </div>
                     <div style="margin:40px auto;width:90%">
                                    <p>{$comment->author} 评论如下:</p>
                                    <p style="background:#fcfcfc;box-shadow:0 2px 5px rgba(0,0,0,.15);margin:20px 0;padding:15px;border-radius:5px;font-size:14px;color:#333">{$commentText}</p>
                                    <p>您可以 <a href="{$comment->permalink}" style="text-decoration:none;color:#12addb" target="_blank" rel="noopener">点击这里查看回复完整内容</a>,欢迎再次光临 <a href="{$options->siteUrl}" style="text-decoration:none;color:#12addb" target="_blank" rel="noopener">{$options->title}</a>。</p>
                                    <p>此邮件由 <a href="{$options->siteUrl}" style="color:#12addb" target="_blank" rel="noopener">{$options->title}</a>系统自动发送,请勿回复,回复也收不到。</p>
                                    <p>如果此邮件不是您请求的,请忽略并可删除本邮件!</p>
                     </div>
      </div>
      
      </body>
      </html>

      1. 乖乖

        这个添加在哪里呢

        1. 叶开楗

          修改插件334-368Plugin.php 行邮件通知样式〜!

      2. Hoe

        👍动手能力强

        1. 夏目贵志

          哈哈

          就是 不懂怎么添加查询原本评论 就是

          您好,您在<xxx文本>一文中发表的评论

          测试评论

          被 秩秩斯干作 了如下回复

          回复测试

          这样的 ~!~

    2. 夏目贵志

      如果动手能力强点 可以修改插件 Plugin.php 334 - 368 行 邮件通知样式~!

    3. Hoe

      暂不支持更改模板😅

      1. Mr.Chou

        最近不知道怎么回事,以前LOVEKK的smtp还能使用QQ邮箱,换126也不行;发现你的插件可以用126,但用QQ邮箱还是不行。不知是否被QQ限制了?

        1. Hoe

          我用的就是QQ邮箱,一定是你的邮箱配置有问题

          1. Mr.Chou

            失败,请检查配置项~
            exception 'PHPMailerPHPMailerException' with message 'SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting' in /home/jrdzjcc/domains/lai.ge/public_html/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php:1758
            Stack trace:

            0 /home/jrdzjcc/domains/lai.ge/public_html/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1513): PHPMailerPHPMailerPHPMailer->smtpSend('Date: Fri, 19 F...', '5rWL6K+Vrn')1 /home/jrdzjcc/domains/lai.ge/public_html/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1352): PHPMailerPHPMailerPHPMailer->postSend()2 /home/jrdzjcc/domains/lai.ge/public_html/usr/plugins/Comment2Mail/Action.php(62): PHPMailerPHPMailerPHPMailer->send()3 /home/jrdzjcc/domains/lai.ge/public_html/var/Typecho/Router.php(138): Comment2Mail_Action->action()4 /home/jrdzjcc/domains/lai.ge/public_html/index.php(23): Typecho_Router::dispatch()5 {main}

            按照教程配置的QQ邮箱,出现这代码。啥意思呢?

  8. tnjc

    博主,我用这个插件之前用qq邮箱还有用,现在改新浪邮箱,插件测试邮件可以收到,但是评论区没法发送和接受,不知是什么原因引起的

    1. Hoe

      试试把记录日志选项取消,可能是插件没有权限写入文件,导致报错

      1. tnjc

        没有开记录日志 好奇怪,我把博客迁移到本地测试是可以收发的,但是服务器上不行,防火墙关了也一样,云服务器是windows2012,软件用的是phpstudy,web用的是apache

  9. haoyuan

    用了大佬的插件 过来道个谢👍

    1. Hoe

      感谢支持

  10. luckystar

    exception 'PHPMailerPHPMailerException' with message 'SMTP Error: Could not authenticate.' in /www/wwwroot/192.168.50.130/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php:1943
    Stack trace:

    0 /www/wwwroot/192.168.50.130/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1757): PHPMailerPHPMailerPHPMailer->smtpConnect(Array)1 /www/wwwroot/192.168.50.130/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1513): PHPMailerPHPMailerPHPMailer->smtpSend('Date: Mon, 19 O...', '5rWL6K+Vrn')2 /www/wwwroot/192.168.50.130/usr/plugins/Comment2Mail/PHPMailer/src/PHPMailer.php(1352): PHPMailerPHPMailerPHPMailer->postSend()3 /www/wwwroot/192.168.50.130/usr/plugins/Comment2Mail/Action.php(62): PHPMailerPHPMailerPHPMailer->send()4 /www/wwwroot/192.168.50.130/var/Typecho/Router.php(138): Comment2Mail_Action->action()5 /www/wwwroot/192.168.50.130/index.php(23): Typecho_Router::dispatch()6 {main}

    给使用邮件插件遇到以上错误代码的一个提示,以上错误代码基本上是账户密码错误,密码登陆项是smtp密码,不是邮箱密码,最后感谢作者大佬热心无私的微信指导帮助!

    1. Hoe

      QQ 邮箱比较特殊,它有独立的 SMTP密码。