当前位置:  开发笔记 > 编程语言 > 正文

如何使用CakePHP中的模型中的电子邮件组件?

如何解决《如何使用CakePHP中的模型中的电子邮件组件?》经验,为你挑选了3个好方法。

我有一个非常简单的模型.我想在模型的方法上添加一个发送电子邮件例程:

$this->Email->delivery = 'smtp';
$this->Email->template = 'default';
$this->Email->sendAs = 'text';     
$this->Email->from    = 'email';
$this->Email->to      = 'email';
$this->Email->subject = 'Error';

我试过试试

App::import('Component', 'Email');

在顶部,无济于事.我得到的错误是:

致命错误:在第23行的E:\ xampp\htdocs8080\app\models\debug.php中调用未定义的方法stdClass :: send()

有任何想法吗?

我正在运行CakePHP 1.2



1> nanoman..:

即使这不是最佳实践,您实际上可以在模型中使用EmailComponent,但是您需要实例化它(在模型中没有自动组件加载)并且您需要将其传递给控制器​​.EmailComponent依赖于Controller,因为它需要与视图连接,用于呈现电子邮件模板和布局.

在您的模型中使用这样的方法

function sendEmail(&$controller) {
    App::import('Component', 'Email');
    $email = new EmailComponent();
    $email->startup($controller);
}

您可以在控制器中使用它,如下所示:

$这 - >模型 - > sendEmail($本);

(如果您使用的是PHP5,请省略方法签名中的&)



2> Sergei..:

好吧,你做错了.您应该在AppController中放置电子邮件发送例程:

function _sendMail($to,$subject,$template) {
    $this->Email->to = $to;
    // $this->Email->bcc = array('secret@example.com'); // copies
    $this->Email->subject = $subject;
    $this->Email->replyTo = 'noreply@domain.com';
    $this->Email->from = 'MyName ';
    $this->Email->template = $template;
    $this->Email->sendAs = 'text'; //Send as 'html', 'text' or 'both' (default is 'text')
    $this->Email->send();
}

然后在任何控制器中使用它,如下所示:

$this->_sendMail($this->data['User']['email'],'Thanks for registering!','register');

并且不要忘记放置

var $components = array('Email');

在控制器中,您正在使用_sendMail函数.


谢谢!"请输入至少10个字符." 是一个愚蠢的要求.

3> Randy..:

CakePHP 2.0具有可在任何地方使用的新CakeEmail类:

http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有