WordPress评论回复邮件通知功能

评论回复邮件通知功能的好处自不必说。但是针对不支持mail函数的主机来说还是比较麻烦。在网上搜教程的时候,几乎全部都在说需要修改include中class-smtp.php的代码,然而在我打开class-smtp.php的时候,发现代码位置和结构都已经和教程中所展示的不一样了。仔细研究了一下才发现,原来最新版的WordPress已经已经对fsockopen做了兼容。也就是说,在新版本的WordPress已经不需要再修改class-smtp.php中的任何代码了。配置方法非常简单,下面以目前的最新版本4.4.2为例。

第一步:开启fsockopen函数

登录服务商主机后台,找到PHP环境相关设置界面,将fsockopen函数设置为开启。没有找到的请自行咨询客服。

第二步:安装smtp插件

我使用的是WP SMTP这款插件,配置比较简单。下面是插件配置项说明:

发件人地址 -> 你用来发送邮件的邮箱地址
发件人昵称 -> 用于显示发件人
SMTP服务器地址 -> 可以到邮箱的客户端设置中找到(例如126邮箱:smtp.126.com)
SMTP加密方式 -> 根据邮箱自行设定
SMTP端口 -> 同上,一般ssl端口号为465;普通端口25
SMTP认证 -> YES
认证用户名 -> 邮箱地址
认证密码 -> 邮箱登录密码

设置完毕,可以填写一个邮箱地址进行测试,如果测试成功,那么继续下一步。

第三步:添加邮件内容

直接上代码,粘贴至主题文件夹function.php内。html标签内的样式代码可以根据自己的需要进行修改。

function comment_mail_notify($comment_id) {</p>
<pre><code>$comment = get_comment($comment_id);

$parent_id = $comment-&gt;comment_parent ? $comment-&gt;comment_parent : '';

$spam_confirmed = $comment-&gt;comment_approved;

if (($parent_id != '') &amp;&amp; ($spam_confirmed != 'spam')) {
    $wp_email = 'beyond0420@126.com' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 发出点, no-reply 可改为可用的 e-mail.

    $to = trim(get_comment($parent_id)-&gt;comment_author_email);

    $subject = '[' . get_option(&quot;blogname&quot;) . '] 您的留言有了新回复';

    $message = '

    &lt;div style=&quot;width: 60%;margin: 0 auto&quot;&gt;

      &lt;div style=&quot;font-size: 28px;line-height: 28px;text-align: center;&quot;&gt;&lt;p&gt;' . trim(get_comment($parent_id)-&gt;comment_author) . ', 您好!&lt;/p&gt;&lt;/div&gt;

      &lt;div style=&quot;border-bottom: 1px solid #eee;padding-top: 10px;&quot;&gt;

        &lt;p style=&quot;color: #999;&quot;&gt;您曾在《' . get_the_title($comment-&gt;comment_post_ID) . '》的留言:&lt;/p&gt;

        &lt;p style=&quot;font-size: 18px;&quot;&gt;' . trim(get_comment($parent_id)-&gt;comment_content) . '&lt;/p&gt;

     &lt;/div&gt;

     &lt;div style=&quot;border-bottom: 1px solid #eee;padding-top: 10px;&quot;&gt;

       &lt;p style=&quot;color: #999;&quot;&gt;' . trim($comment-&gt;comment_author) . ' 给您的回复:&lt;/p&gt;

       &lt;p style=&quot;font-size: 18px;&quot;&gt;' . trim($comment-&gt;comment_content) . '&lt;/p&gt;

       &lt;p style=&quot;text-align: center;font-size: 12px;padding-bottom: 20px;&quot;&gt;&lt;a style=&quot;border: 1px solid #3297fb;color: #3297fb;padding: 7px 14px;text-decoration: none;-moz-border-radius: 4px;-webkit-border-radius: 4px;border-radius:4px;&quot; href=&quot;' . esc_attr(get_comment_link($parent_id, array('type' =&gt; 'comment'))) . '&quot;&gt;点击查看&lt;/a&gt;&lt;/p&gt;

     &lt;/div&gt;
&lt;div style=&quot;font-size: 12px;color: #999;text-align: center;&quot;&gt;

       &lt;p&gt;此邮件由系统自动发送,请勿回复&lt;/p&gt;

       &lt;p&gt;© &lt;a href=&quot;<a href="http://www.newpm.net">http://www.newpm.net</a>&quot; style=&quot;color: #999;text-decoration: none;&quot;&gt;' . get_option('blogname') . '&lt;/a&gt;&lt;/p&gt;

     &lt;/div&gt;

   &lt;/div&gt;';

   $from = &quot;From: \&quot;&quot; . get_option('blogname') . &quot;\&quot; &lt;$wp_email&gt;&quot;;

   $headers = &quot;$from\nContent-Type: text/html; charset=&quot; . get_option('blog_charset') . &quot;\n&quot;; wp_mail( $to, $subject, $message, $headers ); } }

add_action('comment_post', 'comment_mail_notify');

完成!

发表评论

18 条回应

  1. Crazy说道:

    感谢大佬,十分好看!

  2. 个人微博说道:

    我也用上了,但是是好是坏的,有时候能发邮件,有时候又不发!奇怪!

  3. Oeasy说道:

    修改密码 文章评论审核的邮件通知正常 就是评论回复没有邮件通知

  4. Oeasy说道:

    添加代码后 网站打不开了怎么回事呀

  5. xiangyu说道:

    感谢博主,已经照着博文做好了邮件功能

  6. 9yu说道:

    O(∩_∩)O谢谢,已用上,样式很好看。

  7. Charl.A说道:

    感谢 很有用

  8. 林中有鬼说道:

    已借用,代码和UI很简洁,谢谢!

    1. Joey Feng说道:

       :-)

  9. Water Horse说道:

    已经借用此代码,非常完美

  10. 哎,都怪自己笨,一直都弄不好这个,好不郁闷!

  11. HAKU说道:

    还是不能用,感觉要炸了

  12. 菊部说道:

    感谢分享

  13. 颜文字说道:

    博客很漂亮

  14. Tokin说道:

    上午来的时候,代码还都在一行显示

    1. Joey Feng说道:

      之前用prism.js,不知道为什么一直单行显示。下午换了Highlight.js。邮件功能搞定了,看看有没有收到 🙂

      1. Tokin说道:

        可以收到,邮件样式好漂亮

        1. Joey Feng说道:

          哈哈,配合主题样式随便写的。刚才用手机打开发现在评论区找不到回复按钮……