我正在制作cakephp 2.3。我想将电子邮件组件加载到我的类中,该类位于Lib文件夹中。对于供应商文件也是如此,我正在做的是这个..
App::uses('EmailComponent', 'Controller/Component');
class Email {
public static function sendemail($toEmail,$template,$subject) {
$this->Email->smtpOptions = array(
'port'=>'25',
'timeout'=>'30',
'host' => 'host',
'username'=>'username',
'password'=>'password'
);
$this->Email->template = $template;
$this->Email->from = 'no-reply@hello.com';
$this->Email->to = $toEmail;
$this->Email->subject = $subject;
$this->Email->sendAs = 'both';
$this->Email->delivery = 'smtp';
$this->Email->send();
}
我无法使用$this
..我收到此错误
$ this
答案 0 :(得分:2)
你不这样做,组件是控制器“扩展”,没有它们就不能使用它们。
对于电子邮件目的,请使用CakeEmail
class(不管怎样都不推荐使用电子邮件组件)。
App::uses('CakeEmail', 'Network/Email');
// ...
$Email = new CakeEmail(array(
'port' => 25,
'timeout' => 30,
'host' => 'host',
'username' => 'username',
'password' => 'password',
'transport' => 'Smtp'
));
$Email->template($template)
->emailFormat('both')
->from('no-reply@hello.com')
->to($toEmail)
->subject($subject)
->send();
答案 1 :(得分:0)
$这可以在类中用于它们的on变量和类中定义的方法 在cakephp $中,当在控制器中定义$ components数组时,这将在控制器中使用。
试试这个
$email = EmailComponent();
$email->$smtpOptions= array();
答案 2 :(得分:0)
我能够使用以下内容在Cake 3的Lib
课程中克服此问题...
$oRegistry = new ComponentRegistry();
$oComponent = $oRegistry->load('PluginName.ComponentName');
我不确定这是否会与应用程序组件注册表的状态产生任何不和谐;但是,就我的目的而言,似乎有效。
希望这有助于某人:)