链接phpmailer时出错

时间:2015-12-15 10:50:46

标签: php email smtp phpmailer

在最近的一个项目中,我被要求链接重置密码表单,以便使用SMTP php邮件程序自动从amazonAWS发送邮件。我已将调用代码(mail-&gt; *)放入函数中。但是,由于这样做,我似乎收到了一个“致命错误:在第1530行的/var/www/html/PHPMailer-master/class.phpmailer.php中调用未定义的方法smtp :: connected()”< / strong>即可。我似乎无法找到为什么会发生这种情况,并且想知道是否有人看到了类似的反应。

任何帮助将不胜感激。代码如下

smtp.php:

    require_once('/var/www/html/PHPMailer-master/PHPMailerAutoload.php');
    class smtp {

        var $mail;

        function __construct () {
            $this->mail = new PHPMailer;
            $this->mail->isSMTP();
            $this->mail->Host = 'email-smtp.eu-west-1.amazonaws.com';
            $this->mail->SMTPAuth = true;
            $this->mail->Username = '---';
            $this->mail->Password = '---';
            $this->mail->SMTPSecure = 'tls';
            $this->mail->SMTPKeepAlive = true;
            $this->mail->Port = 587;
            $this->mail->From = '---.com';
            $this->mail->FromName = '---';
            $this->mail->WordWrap = 50;
            $this->mail->isHTML(true);
            $this->mail->AltBody = 'Please use an HTML-enabled email client to view this message.';
        }

        function setSubject ($subject) {
            $this->mail->Subject = $subject;
        }

        function setBody ($body) {
            $this->mail->Body = stripslashes($body);
        }

        function sendTo ($to) {
            $this->mail->clearAddresses();
            $this->mail->addAddress($to);

            if (!$this->mail->send()) {
                return false;
            } else {
                return true;
            }
        }

    }

通话功能:

public function resetlink(){
        if($this->_passed){
            $pass = $this->_hash->getrand();
            if($this->_db->userValidate($_POST['email'])->getValidate()){
                $this->_db->update('---', array(
                        'username' => $_POST['email'], 
                        'value' => $pass

                ));

                $smtp = new smtp();
                $smtp->setSubject('sample subject');
                $smtp->setBody('sample body');
                $smtp->sendTo($_POST['email']);


            }else{
                echo "invalid email";
            }
        } return $this;
    }

导致问题的函数在class.phpmailer.php中:

if ($this->smtp->connected()) {
            return true;
        } 

当代码以程序样式运行时,测试电子邮件能够发送,因此mail-&gt; *变量是正确的。但是,自从代码作为函数运行以来,发现了一个错误。再一次,任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

PHPMailer包含并使用class named SMTP

如果在它之前定义了类smtp,那么PHPMailer可能会实例化您的SMTP类而不是它自己的类,而未定义该函数。

你应该给自己的班级一个不同的名字,这样他们就不会碰撞。