首页 > wordpress > wordpress 防止垃圾邮件 pluggable文件大修改
2009六月15

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

//line number 304
// 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

//line number 349
    // From email and name
    // If we don't have a name from the input headers
    if ( !isset( $from_name ) ) {
        $from_name = 'WordPress';
    }

既然是默认值,那么当然要改为我自己的名字不是?

    if ( !isset( $from_name ) ) {
        $from_name = '小小子';
    }

继续看,发信人的地址也被设了默认值,那就是wordpress@你的域名

//line number 362
    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;
    }

没啥说的了,把这讨厌的地址换掉,统统换掉,嗯。

    if ( !isset( $from_email ) ) {
        $from_email = 'simaopig@xiaoxiaozi.com';
    }

在wp_notify_postauthor这个函数中,其也有调用wp_email,可是奇怪,为什么不把其作为private的私有变量呢?这样用起来多方便。

//line number 1003
$wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));

还是那句话,改吧

$wp_email = 'simaopig@xiaoxiaozi.com';

一切太平了,现在发邮件的地址又变成了simaopig@xiaoxiaozi.com了。并且,发送的邮件也不会再被当作垃圾邮件。

还等什么?你不想改吗?

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/15/864/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

27 Responses to “wordpress 防止垃圾邮件 pluggable文件大修改”

  1. #1 荒野无灯 回复 | 引用 Post:2009-06-17 03:34

    我每天都基本上收到老外的垃圾留言

    [回复]

  2. #2 micogle 回复 | 引用 Post:2009-07-04 19:55

    有个问题,为什么我每次回复完别人的评论之后自己还会收到一份电邮提醒呢~~~~

    [回复]

  3. #3 simaopig 回复 | 引用 Post:2009-07-04 20:25

    @micogle
    在插件的配置里面,将“通知管理员”选项去掉就可以了。 :lol:

    [回复]

  4. #4 micogle 回复 | 引用 Post:2009-07-04 20:40

    @simaopig
    恩,哦了

    [回复]

  5. #5 simaopig 回复 | 引用 Post:2009-07-04 20:41

    @micogle
    呵呵,解决问题就好。 :roll:

    [回复]

  6. #6 vayu 回复 | 引用 Post:2009-08-07 16:41

    非常谢谢,先研究下~

    [回复]

  7. #7 aify 回复 | 引用 Post:2009-09-26 22:53

    很喜欢你的博客,修改的也很好,这篇文章我很有帮助,谢谢,明天给你梳小辫儿,哈哈!

    [回复]

评论分页

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)