wordpress 防止垃圾邮件 pluggable文件大修改
之前我也写过文章,为了和广大同胞更好的互动,在我回复评论的时候会给众位发邮件通知的,而且为了防止其被当做垃圾邮件还特意写了一篇日志,不过当时用的是gmail邮箱,而发邮件的地址域名又是xiaoxiaozi.com,所以经Xiaoding童鞋的提醒,把邮件地址改为simaopig@xiaoxiaozi.com。
但是莫名的,自打把皮肤升级之后发现不能发邮件了。试过好多方法均不可以。无奈,只能求助于插件。具体请看我之前的文章wp-mail-smtp 解决 wordpress不能发邮件苦恼
今天,经bolo童鞋提醒,发现以前测试时发的一些邮件,系统都给补发了。奇怪。
于是仔细回想,难道是wordpress升级到2.8后把我不小心改错了的文件恢复了?息壤本来也是允许发邮件的,所以我也就不用使用插件了?
仔细验证,进入后台,停用WP Mail SMTP,用Mail To Commenter给自己发邮件,居然真的发过去了。不过发信人名称为Wordpress,且被当做垃圾邮件,一看地址,竟然变成了奇怪的:simaopig@D9.XRNET.CN
哈,既然能发邮件了。那么我还能允许我的邮件被当作垃圾邮件了吗?NO。
行动,更改文件wp-includes/pluggable.php
// Mainly for legacy -- process a From: header if it's there
if ( 'from' == strtolower($name) ) {
if ( strpos($content, '<' ) !== false ) {
// So... making my life hard again?
$from_name = substr( $content, 0, strpos( $content, '<' ) - 1 );
$from_name = str_replace( '"', '', $from_name );
$from_name = trim( $from_name );
$from_email = substr( $content, strpos( $content, '<' ) + 1 );
$from_email = str_replace( '>', '', $from_email );
$from_email = trim( $from_email );
} else {
$from_email = trim( $content );
}
看这里,在定义发信人的名字,及发信人的地址,居然是从内容里面去掉空格,唉,算了,啥也不说了。改吧。
if ( 'from' == strtolower($name) ) {
if ( strpos($content, '<' ) !== false ) {
// So... making my life hard again?
$from_name = '小小子';
$from_email = 'simaopig@xiaoxiaozi.com';
} else {
$from_email = 'simaopig@xiaoxiaozi.com';
}
接着看第352行,其为发信人设置了默认值,也就是刚才说的Wordpress
// From email and name
// If we don't have a name from the input headers
if ( !isset( $from_name ) ) {
$from_name = 'WordPress';
}
既然是默认值,那么当然要改为我自己的名字不是?
$from_name = '小小子';
}
继续看,发信人的地址也被设了默认值,那就是wordpress@你的域名
if ( !isset( $from_email ) ) {
// Get the site domain and get rid of www.
$sitename = strtolower( $_SERVER['SERVER_NAME'] );
if ( substr( $sitename, 0, 4 ) == 'www.' ) {
$sitename = substr( $sitename, 4 );
}
$from_email = 'wordpress@' . $sitename;
}
没啥说的了,把这讨厌的地址换掉,统统换掉,嗯。
$from_email = 'simaopig@xiaoxiaozi.com';
}
在wp_notify_postauthor这个函数中,其也有调用wp_email,可是奇怪,为什么不把其作为private的私有变量呢?这样用起来多方便。
$wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
还是那句话,改吧
一切太平了,现在发邮件的地址又变成了simaopig@xiaoxiaozi.com了。并且,发送的邮件也不会再被当作垃圾邮件。
还等什么?你不想改吗?
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/15/864/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
我每天都基本上收到老外的垃圾留言
[回复]
有个问题,为什么我每次回复完别人的评论之后自己还会收到一份电邮提醒呢~~~~
[回复]
@micogle
在插件的配置里面,将“通知管理员”选项去掉就可以了。
[回复]
@simaopig
恩,哦了
[回复]
@micogle
呵呵,解决问题就好。
[回复]
非常谢谢,先研究下~
[回复]
很喜欢你的博客,修改的也很好,这篇文章我很有帮助,谢谢,明天给你梳小辫儿,哈哈!
[回复]