Comment Mail Notify:适用于Twenty Ten主题的WordPress评论邮件回复代码

默认情况下,当读者在你的WordPress站点上提交了评论留言后,作为管理员的你会收到系统自动发给你的通知邮件,这是个很方便的提醒功能。

问题是,你给评论者的回复却不会通过邮件通知到对方,这个就不是很方便啦!网上搜一下,好多插件支持评论邮件回复通知的功能,不过试了一下,多数过于复杂or花哨了:我仅仅是需要提供给读者一个选项,让他们自己选择是否接受我的邮件回复通知就行了。

继续搜索,发现大师Willin Kan已经提供了详尽的代码来实现这个功能,而且很细心的分多个情景给大家选择。原文是《Comment Mail Notify》,请有兴趣的读者移步围观之~我选择的情景是:有复选框, 访客可以决定是否要接收邮件通知。Willin Kan的原始代码中相关的提示语是繁体中文的,最好根据需要改成简体中文。把所需的代码修改后复制进所用主题functions.php文件的<?php… ?>中即可。

几个要注意的地方:
1)先设置好用来自动回复读者评论的可用邮箱地址
必须在你的空间商那里创建一个以你的网站域名为后缀的专用邮箱。例如,常用的格式有no-reply@yourdomain.com。Willin Kan提供的代码中默认就是这个格式的邮箱,如果你不用这个格式的话,可以修改$wp_email = ‘no-reply@’为自己定义的邮箱。

2)CSS样式问题
其他主题我不清楚,不过我使用的Twenty Ten主题是必须修改CSS的,不然复选框和提示语会错位。这里要赞一下Willin Kan,我在他的博客上留言请教如何修改CSS,他很详细地回复了,好人啊……我得好好总结下,让更多使用Twenty Ten主题的童鞋能用上大师的代码。

直接进网站后台的“外观 – 编辑”页面,找到style.css文件。

搜索到以下代码:
respond input {
margin: 0 0 9px;
width: 98%;
}

在}符号后下一行直接添加以下代码:
#respond input#comment_mail_notify{
margin: 0 9px;
width: 10px;
}

继续搜索到以下代码:
#respond .form-submit {
margin: 12px 0;
}

添加一段代码:
display: inline;

最终变为:
#respond .form-submit {
margin: 12px 0;
display: inline;
}

3)解决邮件代发问题(指定真实发件人地址)
默认情况下,如果你的主机支持mail()函数,那么按照以上步骤使用Comment Mail Notify就可以正常发回复邮件给读者了。不过还有一个小问题,我也不知道是不是所有主机都会有这种情况:默认通过WordPress发出的邮件都是由空间商的邮件服务器代发的。

这是什么意思呢?举个例子,默认情况下,不做任何配置的话,读者在我的网站上留言,WordPress本身会自动发邮件通知我。这个发送邮件的地址一般都是wordpress@mydomain.com,而且容易被当作垃圾邮件。原因很简单,仔细查看下收到的通知邮件就明白了,因为这类邮件是由主机商的某个邮件服务器信箱代发的,与“发件人”显示的地址不一致,易被判为仿冒邮件。同样的道理,虽然我在Comment Mail Notify代码中已经指定了一个no-reply@yourdomain.com,可是实际发件人并不是这个地址。

wordpress邮件代发实例(真实发件人与发件人地址不一致)

解决方法?网上有很多说法,各执一词。我是误打误撞解决这个问题的:使用插件wp-mail-smtp。关于wp-mail-smtp,网上提到它的教程一般都是这么说的:Windows主机禁用了mail(),于是必须用smtp形式来发邮件,故采用wp-mail-smtp来使用第三方邮箱……慢着,为啥很少人提到wp-mail-smtp也是支持mail()函数的?我直接在这个插件的设置页指定了no-reply@yourdomain.com,选择发送方式为 Use the PHP mail() function to send emails,并且勾选了复选框“Set the return-path to match the From Email”,就完成设置了。测试了一下,无论是留言审核提醒,还是读者评论自动回复,都会以no-reply@yourdomain.com为真实发件人地址。

虽然解决了这个奇怪的邮件代发问题,只是我还是有点绕不过弯来:既然我的linux主机本身就支持mail()函数,我又何必多此一举通过一个插件来使用这个函数?应该是有直接修改程序的方法,只是我没找到而已。若您对此问题有所了解,欢迎指点一下迷津!

好了,从现在开始你的WordPress站点已经能够自动将你的回复发邮件通知读者了。

wp-mail-smtp。

“Comment Mail Notify:适用于Twenty Ten主题的WordPress评论邮件回复代码”的21个回复

  1. 不知道博主找到解决的办法没有?
    我是指直接修改代码实现发件人信息修改,而不用插件。
    真心求教啊。。。

    1. 很遗憾,我尚未能解决这个问题,只好用插件顶上了。Comment Mail Notify的作者也许知道,您可以试着去他的网站留言问下。

          1. 失败了。试了好多方法,都不行。我想修改php.ini可以改掉默认的系统邮件账户,可惜虚拟主机改不了。capnel里把默认标识改掉以后,手动发邮件正常了,但是用mail函数还是不行,还是出现由XXX代发。不管了,由他去吧。。。

    1. 没有么,有啊……不过如果你是指那个邮件代发地址的问题,确实只能通过插件解决,没法用代码实现。

        1. 按照Willin Kan的说法,使用Comment Mail Notify的前提是主机必须有mail()功能,没有的话必须先用一些smtp插件来实现基本的邮件功能。WP-Mail-SMTP貌似就是用来解决类似问题的插件,这个也不行么?

          1. WP-Mail-SMTP不能解决问题,其它SMT插件P也解决不了问题。不知什么原因。我的主机是在hostmonster的

  2. 老兄,请教个问题:听说要让WP-Mail-SMTP正常使用,需要正确配置php.ini。请问php.ini是哪个文件,在哪里可找到?感谢

    1. 这个我也不太清楚,Google了一下,似乎是需要有服务器修改权限才能操作的,很多虚拟主机都不支持吧?您最好发个ticket问一下您的主机客服,他们应该知道的。

    1. 汗,你的留言板会过滤内容,导致我发的内容中包含的邮件地址,都被过滤掉了。。。所以,还是直接去看我的帖子里面的详细解释吧。。。

    2. 感谢分享!那个邮件代发地址问题,以前不明白,所以用了WP Mail SMTP,前一阵其实我也发现可以修改php.ini可以实现这个目的了,只是暂时没改过来。貌似我在用第一个主机时也Google过类似的资料,不过当时没找到php.ini这个文件在哪里,现在想来应该是那个主机的cPanel后台没有相关选项,不支持手动编辑这个文件。不过Bluehost倒是支持这个,前一阵研究Gzip发现的。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注