ERRNO:8192试图发送邮件时

时间:2010-04-10 08:00:55

标签: php email pear

我有以下代码,当我把它放在任何空白的PHP页面时,但当我尝试将代码放在另一个PHP页面,我已经有一些代码,我得到错误:

ERRNO: 8192
TEXT: Assigning the return value of new by reference is deprecated
LOCATION: C:\xampp\php\PEAR\Mail.php, line 154,
 include('Mail.php');
        $mail = Mail::factory("mail");

        $headers = array("From"=>"xyz@gmail.com", "Subject"=>"Your order has been placed   ");
        $body = "lol";
        $mail->send("abc@live.com", $headers, $body);

1 个答案:

答案 0 :(得分:1)

您可能有旧版本的PEAR :: Mail。可能是版本1.1.14,是当前稳定版本1.2.0之前的最后一个稳定版本。

尝试

pear channel-update pear.php.net
pear upgrade Mail

获取最新版本。


编辑:这实际上不是答案的一部分,但也不适合评论:

出于调试目的,用

替换pear / Mail.php中的工厂函数
function &factory($driver, $params = array())
{
  $driver = strtolower($driver);
  echo '<pre>Debug: driver=', $driver, "</pre>\n";
  echo '<pre>Debug: include_path=', get_include_path(), "</pre>\n";
  echo '<pre>Debug: cwd=', getcwd(), "</pre>\n";
  echo '<pre>Debug: __FILE__=', __FILE__, "</pre>\n";

  require_once 'Mail/' . $driver . '.php';
  $class = 'Mail_' . $driver;
  if (class_exists($class)) {
    $mailer = new $class($params);
    return $mailer;
  }
  else {
    throw new Exception('Unable to find class for driver ' . $driver);
  }
}