最新消息:

解决WP-Mail-SMTP在php5.3后出现的Function ereg() is deprecated邮件无法发送

wordpress ZmmFly 3139浏览 4评论
[box]这是一篇晚上写的文章…

博主好困…写完就睡了~~~![/box] [box] 首先说一下我是怎么发现的吧…

我在捣鼓数据库备份插件时测试邮件备份时发现了那个错误…

另外这个错误只有php5.3及以后的版本才有!

同时这个错误也可能导致评论邮件发不出去

[/box]
[box] 解决方法很简单

那就是将ereg修改为preg_match,然后在正则前后都加上”/”

在WP-Mail-SMTP.php里搜索ereg,找到的第一个就替换为preg_match,然后正则前后加”/”

不会改得同学可以直接用下面改好的函数段替换原ereg所在的函数段

下面的这个可能会报错,请看最下面的

if (!function_exists('validate_email')) :
function validate_email( $email, $check_domain = true) {
    if (preg_match('/^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+/'.'@'.
        '/[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\./'.
        '/[-!#$%&\'*+\\.\/0-9=?A-Z^_`a-z{|}~]+$/', $email))
    {
        if ($check_domain && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);

            if (checkdnsrr($domain.'.', 'MX') || checkdnsrr($domain.'.', 'A')) {
                return true;
            }
            return false;
        }
        return true;
    }
    return false;
}

另外,如果实在不会改可以等我修改好的…

[/box] [box] 坑爹了…

这插件的正则在改完后虽然可以用…但是PHP总是报错….

PHP Warning:  preg_match(): Unknown modifier ‘0’

唉…做为一个正则渣表示鸭梨山大…

直接谷歌了一个正则把原来的给换掉…

if (!function_exists('validate_email')) :
function validate_email( $email, $check_domain = true) {
    if (preg_match('/^[^0-9][a-zA-Z0-9_]+ ([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+ ([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email))
    {
        if ($check_domain && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);

            if (checkdnsrr($domain.'.', 'MX') || checkdnsrr($domain.'.', 'A')) {
                return true;
            }
            return false;
        }
        return true;
    }
    return false;
}
[/box]

转载请注明:神奇海域 » 解决WP-Mail-SMTP在php5.3后出现的Function ereg() is deprecated邮件无法发送

发表我的评论
取消评论

Protected by WP Anti Spam

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. 莫非你跟我说的就是这个问题?
    vfhky评论于11年前 (2013-05-03)回复
    • 呃,什么问题?
      神情话意评论于11年前 (2013-05-03)回复
    • 嗯……是的……
      神情话意评论于11年前 (2013-05-03)回复
      • 这两个回复没收到邮件,后来的两个收到了。
        vfhky评论于11年前 (2013-05-03)回复