wordpress用户留言回复发送邮件到邮箱教程

wordpress用户留言回复发送邮件到邮箱教程
分享

近日想添加一功能,用户留言,管理回复后就自动发送至用户留言时所填的邮箱。

此功能能增加用户粘性,能让用户及时知道管理员已回复,产生很好的互动。

度娘了一下,发现此功能简单,并不难实现。

教程简介:首先查看自己是什么系统的主机,一般来说linux系统主机是支持Mail函数的,能正常发送邮件。当然如果是WIN系列的主机也没有关系,只要支持SMTP就好了。折子戏所在的主机就是WIN系列主机,所以此教程要说的就是在WIN主机下如果实现这个功能。

1:WIN主机下不支持Mail函数,我们首先进入后台→插件中心→安装插件里查询:SMTP。搜索完毕后,安装第一个插件,开启并使用。

2:用腾讯邮箱发送接收邮件,进入腾讯邮箱→点击左上角设置→进入账户→然后在POP3/IMAP/SMTP服务开启打钩开启:POP3/SMTP服务 开启IMAP/SMTP服务

3:完成第三部之后,我们进入后台,进入SMTP插件里设置SMTP插件。

Host(服务器)设置为:smtp.qq.com Port(端口):25

Encryption(协议):None(默认)

Username(QQ账号):zhezixi@qq.com

Password(QQ密码):***********

配置完成后,我们在插件设置中底部输入邮箱地址测试一下。能收到说明配置正确。

4:以上我们已经配置好SMTP了,现在如何让用户留言,管理员回复后自动发送邮件呢?其实也简单的很。

只要在所在皮肤目录下找到functions.php,然后在其中插入如下代码就好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件) */
function comment_mail_notify($comment_id) {
  $comment = get_comment($comment_id);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  $spam_confirmed = $comment->comment_approved;
  if (($parent_id != '') && ($spam_confirmed != 'spam')) {
    $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了回应';
    $message = '
 <div style="font:14px \'Century Gothic\', \'Microsoft YaHei\', Verdana; color:#111; padding:5px 20px;background-color:#eef2fa; border:1px solid #d8e3e8; margin-bottom:15px;">
          <p><b>' . trim(get_comment($parent_id)->comment_author) . '</b> 您好: 您在《<a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">'  . get_the_title($comment->comment_post_ID) . '</a>》 上的评论有了回应!</p>
        </div>
        <div style="font:14px \'Century Gothic\', \'Microsoft YaHei\', Verdana; color:#111; padding:5px 20px;background-color:#eef2fa; border:1px solid #d8e3e8; margin-bottom:15px;">
          <p><b>您</b> 评论说: '. nl2br(get_comment($parent_id)->comment_content) . '</p>
          <p><b>' . trim($comment->comment_author) . ' </b>回应道: ' . nl2br($comment->comment_content) . '</p>   
      <p>您可以猛击这里 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回应完整內容</a>,欢迎再次光临!</p>
      <p style="text-align:right; padding-right:20px;"><br/> <a href="' . get_option('home') . '"><b>' . get_option('blogname') . '</b></a></p>
	  <p style="text-align:right; padding-right:20px;"><br/> <b>(此邮件由系统自动发出, 请勿回复.) </b></a></p>
    </div>';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
    //echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
  }
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------

2011年10月8日,代码修正。

同样的,此次代码依旧是复制到所在风格目录下的

functions.php文件中<!--?php与? -->之间

此次代码修正了:默认回复所有用户的留言都发送邮件,并且不知道为什么,我之前那段代码,我使用的时候会部分时候接受不到邮件,于是乎衍生出了这段代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件) */
function comment_mail_notify($comment_id) {
  $comment = get_comment($comment_id);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  $spam_confirmed = $comment->comment_approved;
  if (($parent_id != '') && ($spam_confirmed != 'spam')) {
    $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了回应';
    $message = '
 <div style="font:14px \'Century Gothic\', \'Microsoft YaHei\', Verdana; color:#111; padding:5px 20px;background-color:#eef2fa; border:1px solid #d8e3e8; margin-bottom:15px;">
          <p><b>' . trim(get_comment($parent_id)->comment_author) . '</b> 您好: 您在《<a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">'  . get_the_title($comment->comment_post_ID) . '</a>》 上的评论有了回应!</p>
        </div>
        <div style="font:14px \'Century Gothic\', \'Microsoft YaHei\', Verdana; color:#111; padding:5px 20px;background-color:#eef2fa; border:1px solid #d8e3e8; margin-bottom:15px;">
          <p><b>您</b> 评论说: '. nl2br(get_comment($parent_id)->comment_content) . '</p>
          <p><b>' . trim($comment->comment_author) . ' </b>回应道: ' . nl2br($comment->comment_content) . '</p>   
      <p>您可以猛击这里 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回应完整內容</a>,欢迎再次光临!</p>
      <p style="text-align:right; padding-right:20px;"><br/> <a href="' . get_option('home') . '"><b>' . get_option('blogname') . '</b></a></p>
	  <p style="text-align:right; padding-right:20px;"><br/> <b>(此邮件由系统自动发出, 请勿回复.) </b></a></p>
    </div>';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
    //echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
  }
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------

6 条精辟评论.

  1. 有美图搜
    回复1楼
    2011 年 9 月 24 日 下午 4:26  

    谢谢提供噢~~~学习了

    • 梦呓之秋 2011 年 9 月 24 日 下午 4:29  

      呵呵恩,共同学习,慢慢进步!

  2. 林肆
    回复2楼
    2011 年 9 月 26 日 下午 2:44  

    有些插件也可以直接支持的,那就不用修改代码了,我之前就弄过,哈哈~

    • 梦呓之秋 2011 年 9 月 26 日 下午 2:57  

      呵呵,是的,不过我还是觉得能不用插件就不用了,代码改过之后自己知道哪里修改过,是为什么,这样方便记忆,也能提高学习。

  3. 老谢
    回复3楼
    2011 年 9 月 27 日 下午 3:41  

    玩wp尽量还是选择linux主机

    • 梦呓之秋 2011 年 9 月 27 日 下午 3:43  

      呵呵,之前折子戏一直是PJ系统的,用WIN系列主机也没觉得什么不好,现在转WP了,也就是将就用一下而已,能适应当然最好了,我这里还有几个网站在运行,后期将弄一个VPS服务器自己配置呢!

Leave a Reply