在最近的一个项目中,我被要求链接重置密码表单,以便使用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; *变量是正确的。但是,自从代码作为函数运行以来,发现了一个错误。再一次,任何帮助将不胜感激。
由于
答案 0 :(得分:1)
PHPMailer包含并使用class named SMTP。
如果在它之前定义了类smtp
,那么PHPMailer可能会实例化您的SMTP类而不是它自己的类,而未定义该函数。
你应该给自己的班级一个不同的名字,这样他们就不会碰撞。