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

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

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

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

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

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

搜索到以下代码:
respondinput{
margin:009px;
width:98%;
}

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

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

添加一段代码:
display:inline;

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

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

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

135032493.png

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

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

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