用过各种各样的邮件插件和评论回复邮件通知的插件,总是没有找到完美的,都会有这样或那样的问题。
这次下决心要把问题搞好,算起来总花了一天多时间。把经验分享一下,免得朋友们走弯路。
wordpress自带邮件功能,但是通过php的mail()函数的,而大多数主机都禁用了mail()函数。(其实我的主机是没有禁用这个函数的,但使用mail函数发的邮件都会被标记为来源不可信任,而且很容易被当成垃圾邮件直接删掉)。所以还是装个smtp的插件比较好。
关于smtp插件的问题,可以看这篇文章 (可能很多朋友试过几乎所有的插件,试过网上几乎所有的方法都没解决问题,但也许这篇文章正是你想要的,因为smtp插件不生效的原因可能是个很冷门的原因)
下面介绍评论邮件回复的插件。
我用的是mail to commenter。配置起来很简单,而且默认的邮件格式很简洁,支持嵌套,很不错。
但装上后也发现是不管用的,网上找了好久好久都没找到解决办法。后来自己无意中试了一下,居然找到问题了。
是邮件头的问题。
解决办法如下:
在插件编辑中找到mail to commenter插件的mailtocommenter_functions.php文件
往下拉,找到mailtocommenter_send_email方法。
方法的最后一句return @wp_mail(...)
你只需要改成wp_mail($to,$subject,$message)就可以了,也就是把headers去掉。
再试一次,邮件发送成功了。
但是你会发现邮件格式是乱的,链接全是乱的。因为邮件接收服务器把它当成了纯文本邮件,但是又自作主张的给网址加上了链接,所以就成了那个样子(我用的qq邮件收的邮件,不同的邮件可能会不一样)
那我们就再把header加上,
直接把header改成 $headers = "Content-Type: text/html;charset="$charset"\n";
return @wp_mail($to, $subject, $message,$headers);
也就是把from和mime去掉了,再测试,邮件发送成功,而且格式完好。看来真是header的问题。
不过这样做的话,发送人姓名就成了默认的wordpress。
所以我干脆去改了wp-mail-smtp插件,也就是把默认发送人姓名直接改成我博客的名字。
找到wp-includes/pluggable.php文件,找到function wp_mail()函数
然后里面有一句
<span style="color: #008000;"> $from_name = 'veikr';</span>```
这里就是设置默认发送人姓名的。
改成你想要的就行了(中文会乱码)
好了,到此就全部改好了,再去试试吧。完全没问题了。