如何在不使用命令的情況下從swiftmailer發送後臺打印?如何在不使用命令的情況下從swiftmailer發送後臺打印
php app/console swiftmailer:spool:send --env=prod
我需要把這個莫名其妙到PHP文件,使服務器管理員可以添加此附表。
如何在不使用命令的情況下從swiftmailer發送後臺打印?如何在不使用命令的情況下從swiftmailer發送後臺打印
php app/console swiftmailer:spool:send --env=prod
我需要把這個莫名其妙到PHP文件,使服務器管理員可以添加此附表。
只要執行與命令相同的操作即可。從命令執行()函數:
$mailer = $this->getContainer()->get('mailer');
$transport = $mailer->getTransport();
if ($transport instanceof \Swift_Transport_SpoolTransport) {
$spool = $transport->getSpool();
if ($spool instanceof \Swift_ConfigurableSpool) {
$spool->setMessageLimit($input->getOption('message-limit'));
$spool->setTimeLimit($input->getOption('time-limit'));
}
if ($spool instanceof \Swift_FileSpool) {
if (null !== $input->getOption('recover-timeout')) {
$spool->recover($input->getOption('recover-timeout'));
} else {
$spool->recover();
}
}
$sent = $spool->flushQueue($this->getContainer()->get('swiftmailer.transport.real'));
$output->writeln(sprintf('sent %s emails', $sent));
}
您需要刪除$輸出 - > ...線(也許你可以做一些與$送變電有用)。此外,這段代碼尋找兩種假脫機,也許你不需要所有的代碼,如果你的假脫機不是這些類型之一。
這也可以通過How can I run symfony 2 run command from controller來實現,所以你不要複製代碼。爲我工作。
services.yml:
services:
swiftmailer.command.spool_send:
class: Symfony\Bundle\SwiftmailerBundle\Command\SendEmailCommand
calls:
- [ setContainer, ["@service_container"] ]
控制器代碼(簡化):
$this->get('swiftmailer.command.spool_send')->run(new ArgvInput(array()), new ConsoleOutput());
這絕對是更好的答案。 –
是的,這是一個官方的方式來做到這一點 - http://symfony.com/doc/3.2/console/command_in_controller.html –
工作就像一個魅力:)謝謝卡洛斯 – Tom