【发布时间】:2017-09-16 08:11:01
【问题描述】:
我正在尝试在我的应用程序中发送后台电子邮件。
我正在制作一个 shell,我最终会安排它通过一个 crontask 运行。
我正在尝试在我的 EmailShell 中运行以下代码:
<?php
namespace App\Shell;
use Cake\Console\Shell;
use Cake\Core\App;
App::import('Controller', 'Messages');
class EmailShell extends Shell{
public function main(){
//Check for unsent emails
$messagesCont = new MessagesController;
$messages = $messagesCont->findAllUnsent();
//Send all unsent emails
foreach ($messages as $message){
$email = new Email();
$email->to($messages->receiver)
->subject($message->subject)
->send($message->body);
}
//Update the table to be marked as sent
}
}
?>
我需要来自 MessagesController 的代码如下:
public function findAllUnsent(){
$messages = $this->paginate($this->Messages);
foreach ($messages as $message){
if ($message->sent == false){
//If message is unsent then add it to the array
$messagesFound[] = $message;
}
}
//Return the array of unsent messages
return $messagesFound;
}
}
但是,当我使用 bin/cake email 通过命令行终端运行 shell 时
我收到以下错误:
异常:调用未定义的方法 Cake\Core\App::import() in [/home/cabox/workspace/src/Shell/EmailShell.php,第 7 行]
【问题讨论】:
-
stackoverflow.com/questions/28511023/…用控制器替换组件,答案完全一样。可能被标记为它的副本。
-
@burzum 那么您还建议如何在后台发送电子邮件?没有任何在线资源可以做到这一点,我正在努力寻找 CakePHP 3.x 的详细和最新指南