Php 基于PEAR的电子邮件类出错

Php 基于PEAR的电子邮件类出错,php,email,pear,Php,Email,Pear,我试图让一个基于PHP的PEAR库的电子邮件类正常工作,但我经常遇到这样的消息:致命错误:在第42行的/PATH/email.PHP中调用成员函数发送非对象。我尝试了一些不同的方法,但它们没有解决以下代码中的问题: <?php require_once 'Mail.php'; require_once './config/config.php'; class Email { var $smtp_host; var $smtp_port; var $smtp_us

我试图让一个基于PHP的PEAR库的电子邮件类正常工作,但我经常遇到这样的消息:致命错误:在第42行的/PATH/email.PHP中调用成员函数发送非对象。我尝试了一些不同的方法,但它们没有解决以下代码中的问题:

<?php

require_once 'Mail.php';
require_once './config/config.php';

class Email
{
    var $smtp_host;
    var $smtp_port;
    var $smtp_user;
    var $smtp_pass;
    var $from;
    var $smtp_conn;

    function Email($init_smtp_host=SMTP_HOST, $init_smtp_port=SMTP_PORT, $init_smtp_user=SMTP_USER, $init_smtp_pass=SMTP_PASS, $init_from_name='admin', $init_from_email=SMTP_USER)
    {
        $smtp_host = $init_smtp_host;
        $smtp_port = $init_smtp_port;
        $smtp_user = $init_smtp_user;
        $smtp_pass = $init_smtp_pass;
        $from = $init_from_name . ' <' . $init_from_email . '>';

    $smtp_conn =& Mail::factory('smtp', 
                        array(  'host' => $this->smtp_host,
                                'port' => $this->smtp_port,
                                'auth' => TRUE,
                                'username' => $this->smtp_user,
                                'password' => $this->smtp_pass));
}

function send($to_name, $to_email, $subject, $message)
{
    $to = $to_name . ' <' . $to_email . '>';

    $header = array('From' => $this->from, 'To' => $to, 'Subject' => $subject);

    $mail = $this->smtp_conn->send($to, $header, $message);

    if (PEAR::isError($mail))
        return $mail->getMessage();
    else
        return 0; 
}
}
我在$mail=$this->smtp\u conn->send$to,$header,$message上是否做错了什么;显示错误的位置?
谢谢

什么类型的$smtp\u conn?如果工厂失败,它将返回邮件对象以外的内容,比如PEAR::Error。

调用$smtp\U host=。。。如果您没有实际设置类的字段,则需要执行$this->smtp\u host=…这修复了我的问题。非常感谢。gettype$smtp\u conn生成对象,var\u dump$stmp\u conn生成objectMail\u smtp4 13{[\u smtp]=>NULL[\u extparams]=>array0{}[host]=>string9 localhost[port]=>int25[auth]=>booltrue[username]=>string0[password]=>string0[localhost]=>string9 localhost[timeout]=>NULL[debug]=>boolfalse[persist]=>boolfalse[Pipeling]=>NULL[sep]=>string2},因此看起来没有返回错误。