您现在所在的位置: 首页 >> 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 ---------------------------------------- |



























谢谢提供噢~~~学习了
呵呵恩,共同学习,慢慢进步!
有些插件也可以直接支持的,那就不用修改代码了,我之前就弄过,哈哈~
呵呵,是的,不过我还是觉得能不用插件就不用了,代码改过之后自己知道哪里修改过,是为什么,这样方便记忆,也能提高学习。
玩wp尽量还是选择linux主机
呵呵,之前折子戏一直是PJ系统的,用WIN系列主机也没觉得什么不好,现在转WP了,也就是将就用一下而已,能适应当然最好了,我这里还有几个网站在运行,后期将弄一个VPS服务器自己配置呢!