【发布时间】:2019-11-30 09:57:35
【问题描述】:
我正在尝试自动调用发送电子邮件的控制器。 所以我希望能够从 symfony 命令调用这个控制器。 当我从浏览器调用 url 时,控制器功能起作用。但是当我从命令中调用该函数时,我从 Swift Mailer 收到错误,它要求我提供一个参数以构造 swift mailer ($mailer)。
我试图在我的操作调用中注入 \Swift_Mailer,但它只是显示了 Swift_Transport 的另一个参数错误。
这是我的命令文件的代码以及我的控制器操作的签名和开始:
//../src/Command/mailCommand.php
class mailCommand extends Command {
//...
public function execute (InputInterface $input, OutputInterface $output) {
$controller = new MailController();
//try 1
$controller->warningMailAction();
//try 2
//$transport = (new \Swift_SmtpTransport('smtp://smtp.myadress.fr', 25));
// $controller->warningMailAction(new \Swift_Mailer($transport));
$output->writeln('coucou !');
}
}
//---------------------------------------
//../src/Controller/MailController.php
public function warningMailAction(\Swift_Mailer $mailer) {}
我在 symfony 4.3.2 上运行,我不知道如何解决这个问题,我尝试的一切都会导致我出现更多错误。感谢每一个帮助,如果您需要更多我的代码来理解问题,请告诉我
【问题讨论】:
-
我忘记发布错误信息了:
Too few arguments to function App\Controller\MailController::warningMailAction(), 0 passed in /var/www/html/ParcAuto/src/Command/mailCommand.php on line 41 and exa ctly 1 expected -
为了消除你的错误,你试过
$controller->warningMailAction(new \Swift_Mailer);吗? -
是的,我有,然后我有一条错误消息说我 Swift_Mailer 构造需要一个参数为了解决这个问题,我尝试了上面代码的第二种方法(查看 //try 2)
-
调用这样的动作似乎可以解决邮件问题:
$transport = (new \Swift_SmtpTransport('smtp://smtp.myaddress.fr', 25,null));$controller::warningMailAction(new \Swift_Mailer($transport));后面的错误是\FatalThrowableError: Using $this when not in object context,错误出现在我调用教义并访问我的数据库的控制器内部。 -
这是一个完全独立的问题,所以你应该开始一个新的线程。
标签: symfony4 swiftmailer