首页 > 计算机应用 > 自定义WordPress邮件通知发件人地址及显示乱码解决办法

自定义WordPress邮件通知发件人地址及显示乱码解决办法

        今天在博客留言板上光光同学留下了一个消息更新博客链接,在收到后来的评论回复邮件通知的时候(使用Mail To Commenter插件)发现邮件通知的发件人名称显示为wordpess,发件人邮件地址为user@servername的形式而且显示出来是乱码。

Wordpress评论通知地址显示乱码

       以前曾对此进行过DIY并做了本地存档,因为刚升级了WP3.0.3以前的文件被覆盖了所以会出现此问题,今天就把过程顺手贴上来。

       需要修改的文件为/wp-includes/pluggable.php,详情如下。

       以Emeditor等支持编码并能区别UTF-8带/不带签名(BOM)的编辑器打开pluggable.php文件,搜索”making my life hard again”,下面:

  1. $from_name = substr( $content, 0, strpos( $content, ‘<‘ ) – 1 );
  2.  $from_name = str_replace( ‘”‘, , $from_name );
  3.  $from_name = trim( $from_name );
  4. $from_email = substr( $content, strpos( $content, ‘<‘ ) + 1 );
  5. $from_email = str_replace( ‘>’, , $from_email );
  6. $from_email = trim( $from_email );
  7. } else {
  8. $from_email = trim( $content );
  9. }

       本段代码功能:从评论表单中收集用户昵称信息并删除其中的空格,用于通知博客管理员。发件人名称为评论用户昵称,发件人地址为wordpress@yourdomail. 在此将发件人地址自定义,替换为:

  1. $from_name = substr( $content, 0, strpos( $content, ‘<‘ ) – 1 );
  2. $from_name = str_replace( ‘”‘, , $from_name );
  3. $from_name = trim( $from_name );
  4.  
  5. $from_email = ‘noreply@cfresh.net’;
  6. } else {
  7. $from_email = ‘noreply@cfresh.net’;
  8. }

       如果需要将邮件中出现的发件人名称同样修改为自己的博客名称及其他自定义信息,则还需要修改”$from_name”值,替换代码如下:

  1. $from_name = ‘秋天博客’;     
  2.  $from_email = ‘noreply@cfresh.net’;      
  3. else {      
  4. $from_email = ‘noreply@cfresh.net’;      
  5. }    

       其中的”$from_name”值为博客名称,”$from_email”值为使用的自定义用于发送邮件的地址,根据自己的实际情况修改。

       下一步:修改博客默认发件信息,往下搜索:”If we don’t have a name from the input headers”,将下面的:

  1. if ( !isset( $from_name ) )   
  2. $from_name = ‘WordPress’;   
  3.   
  4. /* If we don’t have an email from the input headers default to wordpress@$sitename  
  5. * Some hosts will block outgoing mail from this address if it doesn’t exist but  
  6. * there’s no easy alternative. Defaulting to admin_email might appear to be another  
  7. * option but some hosts may refuse to relay mail from an unknown domain. See  
  8. * http://trac.wordpress.org/ticket/5007.  
  9. */  
  10.   
  11. if ( !isset( $from_email ) ) {   
  12. // Get the site domain and get rid of www.   
  13. $sitename = strtolower$_SERVER[‘SERVER_NAME’] );   
  14. if ( substr$sitename, 0, 4 ) == ‘www.’ ) {   
  15. $sitename = substr$sitename, 4 );   
  16. }   
  17. $from_email = ‘wordpress@’ . $sitename;   
  18. }   
  19. $from_email = ‘wordpress@’ . $sitename;   
  20. }  

       替换为:

  1. if ( !isset( $from_name ) )   
  2. $from_name = ‘秋天博客’;   
  3.   
  4. /* If we don’t have an email from the input headers default to wordpress@$sitename  
  5. * Some hosts will block outgoing mail from this address if it doesn’t exist but  
  6. * there’s no easy alternative. Defaulting to admin_email might appear to be another  
  7. * option but some hosts may refuse to relay mail from an unknown domain. See  
  8. * http://trac.wordpress.org/ticket/5007.  
  9. */  
  10.   
  11. if ( !isset( $from_email ) ) {   
  12. $from_email = ‘noreply@cfresh.net’;   
  13. }  

       在$wp_email这个函数中,也有调用,搜索:”$wp_email= ‘wordpress@’“,将所在行:

  1. $wp_email= ‘wordpress@’ . preg_replace(‘#^www\.#’, strtolower($_SERVER[‘SERVER_NAME’]));  

       替换为:

  1. $wp_email= ‘noreply@cfresh.net’;  

       至此,全部替换修改完成,接着是保存。由于 pluggable.php原文件使用的编码为GB2312简体中文,当修改后的信息中含有中文时如果直接保存会导致显示的$from_name即博客名称为乱码;如果保存为UTF-8带签名(UTF-8 有BOM)编码,则Wordpress后台登录后将变成空白。
故修改完成后,需将文件另存为编码为UTF-8不带签名(UTF-8 无BOM)的同名文件以覆盖原文件。

       BTW:请大家近期不要将Askimet插件升级到最新的2.5.0版,因存在一个BUG:所有人包括管理员自己的评论都将需要审核(我遇到的情况是一边需要审核一边又能显示在前台),已经升级的解决办法是删除后重新下载启用2.4.0版,下载地址:http://downloads.wordpress.org/plugin/akismet.2.4.0.zip

转载请尊重版权,出处:秋天博客
本文链接: https://www.cfresh.net/pc-tech/860

  1. 麦钛蛋
    麦钛蛋 1月 21st, 2013 @ 21:53 | #-31

    一直没弄明白 中文
    原来是编码的问题!
    谢谢博主!

  2. 秋天
    秋天 12月 22nd, 2010 @ 13:07 | #-32

    @龙城瓶子
    以前将一个插件代码化的时候改到了程序代码,自那以后就对插件代码化有点担心,听你这么一说还是来研究一下;停留在模板再好不过了。

  3. 龙城瓶子
    龙城瓶子 12月 22nd, 2010 @ 12:58 | #-33

    @
    秋天

    WordPress主要修改的是主题
    基本不修改主程序
    所以尽情折腾
    PJ的缺陷就在这里。。。

  4. 秋天
    秋天 12月 22nd, 2010 @ 12:54 | #-34

    @柳城
    功能很强大,只是对IE6支持不太好,可能有错位而且拖动起来不流畅。

  5. 秋天
    秋天 12月 22nd, 2010 @ 12:53 | #-35

    @朗朗
    Roger that,稍后登门拜访。

    @宿迁学院论坛
    是啊,WP自身的编码同样不完美,例如这个php文件采用了GB2323编码,如果里面有中文很可能在以UTF-8编码输出的网站上就出现乱码。

    @朗朗
    百度收录需要耐心和时间,增加外链可以缩短这一过程,但不等于有立竿见影的效果。

    @龙城瓶子
    今天到后台一看一共19个插件,在考虑将其中一部分代码化;但这中间有一个问题:修改代码以后如果遇到程序升级怎么办?手动逐个文件的修改吗,以前用PJblog的时候就纠结在这一点上。瓶子有没有什么好的建议?

  6. 青岛达丰
    青岛达丰 12月 22nd, 2010 @ 10:36 | #-36

    ※进来支持一下,很不错的博客呀。※

  7. 易铭网
    易铭网 12月 22nd, 2010 @ 10:35 | #-37

    感谢博主分享,学习一下。

  8. 宁波led显示屏
    宁波led显示屏 12月 21st, 2010 @ 20:53 | #-38

    全是代码啊,学习了,多谢博主分享

  9. 柳城
    柳城 12月 21st, 2010 @ 16:41 | #-39

    这模板倒是不错…

  10. 非常数据
    非常数据 12月 20th, 2010 @ 21:24 | #-40

    真的很不错!!顶!!

  11. 龙城瓶子
    龙城瓶子 12月 20th, 2010 @ 13:22 | #-41

    这个不用插件哇
    直接弄点代码就完了
    。。。。。。

  12. 正品鞋
    正品鞋 12月 20th, 2010 @ 00:37 | #-42

    最近刚好在研究这个问题,呵呵

  13. 朗朗
    朗朗 12月 19th, 2010 @ 21:26 | #-43

    龌龊的我,又来留言了.
    为啥俺的博客都建了1天.百度咋还不收呢?

  14. 宿迁学院论坛
    宿迁学院论坛 12月 19th, 2010 @ 16:08 | #-44

    编码问题?
    貌似乱码 一般都是编码问题啊~

  15. 朗朗
    朗朗 12月 19th, 2010 @ 13:58 | #-45

    小弟新发博文—–朗朗疑问–可否一分钱不花,买到联想笔记本??

    欢迎探讨..广告勿扰..

  16. 朗朗
    朗朗 12月 19th, 2010 @ 11:58 | #-46

    本人发布了一篇文章—60元息壤空间可以放置100个独立域名网站..老大来看看…

  17. 世纪之光
    世纪之光 12月 19th, 2010 @ 01:52 | #-47

    @
    秋天

    哎,我自己把它解决了,辛苦……

  18. 秋天
    秋天 12月 18th, 2010 @ 21:57 | #-48

    @世纪之光
    杯具了,我就会点花拳绣腿,SQL语句还真不懂,哪天碰到老万了来问问他。

  19. 世纪之光
    世纪之光 12月 18th, 2010 @ 19:00 | #-49

    晕 sql被自动转换了。
    update Roger2011_comments b
    set b.comment_content = concat('@',
    (select a.comment_author
    from Roger2011_comments a
    where a.comment_id = b.comment_parent),
    '
    \n',
    b.comment_content)
    WHERE b.comment_id is not null;

  20. 世纪之光
    世纪之光 12月 18th, 2010 @ 18:58 | #-50

    看来你对php和mysql比较了解啊,正好我遇到一个难题。
    因为以前一直使用嵌套评论的方式,所有回复的评论没有加上’@评论者’ 我现在想把这部分数据全部刷成带’@评论者’的,于是乎写了个SQL:

    update Roger2011_comments b
    set b.comment_content = concat(‘@’,
    (select a.comment_author
    from Roger2011_comments a
    where a.comment_id = b.comment_parent),
    \n’,
    b.comment_content)
    WHERE b.comment_id is not null;
    结果呢,报错了,原来mysql的子查询不能这么用,不知道该怎么写了。

  21. 网络营销博客
    网络营销博客 12月 18th, 2010 @ 16:27 | #-51

    路过,支持一下,很不错的博客,文章写得不错,欢迎回访!

  22. 固元膏的功效
    固元膏的功效 12月 18th, 2010 @ 12:53 | #-52

    天啊,没抢到沙发,也没有板凳………

  23. Yalon
    Yalon 12月 18th, 2010 @ 12:31 | #-53

    大家都很爱折腾啊!

  24. 山东招聘
    山东招聘 12月 18th, 2010 @ 11:52 | #-54

    好久没来你的博客了····加油啊··

  25. mini uggs
    mini uggs 12月 18th, 2010 @ 10:03 | #-55

    学习了!嘻嘻! 给你支持下!

  26. 粉丝淘
    粉丝淘 12月 17th, 2010 @ 23:39 | #-56

    很专业的东西` 学习一下

评论提交中, 请稍候...

留言



注意: 您给他人的评论回复将通过邮件通知到对方。

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 1 )
  1. 1月 26th, 2011 @ 17:28 | #1
    Pingback: 声明:最近有人在冒充我发spam∷柳城