我不经常使用类,但一直试图让我的代码更容易管理。我试图扩展PHPMailer,然后创建对象并发送邮件,但是在扩展类中使用$ this函数时遇到问题。
require 'phpmailer/PHPMailerAutoload.php';
class Mailz extends PHPMailer {
public $From = '[email protected]';
public $FromName = 'Examplemail';
public $Host = 'mail.example.com';
public $SMTPAuth = true;
public $Username = '[email protected]';
public $Password = '123example';
public $SMTPSecure = 'ssl';
public $Port = 465;
public $Priority = 1;
public $CharSet = 'UTF-8';
public $Encoding = '8bit';
public $Content = 'text/html';
public function send() {
return parent::send();
}
/*
* welcome email
*/
public static function sendWelcome($email,$password) {
$message = str_replace(
array(
'[body]',
'[first_name]',
'[email_address]',
'[password]'
),
array(
$body = 'Lorem ipsum yadadada',
$email_address = $email,
$password,
),
file_get_contents('welcome.html')
);
$this->Subject = 'Subject Line!';
$this->Body = $message;
if(!$this->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $this->ErrorInfo;
} else {
echo 'Message has been sent';
}
}
}
$sendemail = new Mailz();
$sendemail->sendWelcome('[email protected]','P4$$w0rd');
我一直试图用不同的方式修复它几个小时,但我没有更接近寻找解决方案。我目前收到的错误是:未捕获的错误:使用$ this,而不是在此行上的对象上下文中 - $ this-> Subject ='Subject Line!';同样可能会发生$ this的其他用途。
我错过了什么!
明白了,现在对静态功能有了更好的理解。我没有在课堂上使用它们,显然将它从我的普通函数文件移动到课堂上有助于创建这个问题。 现在完美工作,谢谢! – Erbilacx