Wie Spool von Swiftmailer ohne Befehl zu senden?So senden Sie Spool aus Swiftmailer ohne Befehl
php app/console swiftmailer:spool:send --env=prod
Ich brauche diese Datei irgendwie in PHP zu setzen, so dass Admin-Server kann dies in dem Zeitplan.
Wie Spool von Swiftmailer ohne Befehl zu senden?So senden Sie Spool aus Swiftmailer ohne Befehl
php app/console swiftmailer:spool:send --env=prod
Ich brauche diese Datei irgendwie in PHP zu setzen, so dass Admin-Server kann dies in dem Zeitplan.
Tun Sie das Gleiche wie der Befehl. Vom Befehl Ausführen() Funktion:
$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));
}
Sie müssen den $ output entfernen -> ... Linie (vielleicht können Sie etwas Nützliches mit dem $ gesendet Variable tun). Außerdem sucht dieser Code nach zwei Arten von Spool, vielleicht brauchen Sie nicht den ganzen Code, wenn Ihre Spool keine dieser Arten ist.
Dies kann auch durch How can I run symfony 2 run command from controller erreicht werden, so dass Sie keinen Code duplizieren. Arbeitete für mich.
services.yml:
services:
swiftmailer.command.spool_send:
class: Symfony\Bundle\SwiftmailerBundle\Command\SendEmailCommand
calls:
- [ setContainer, ["@service_container"] ]
Controller-Code (vereinfacht):
$this->get('swiftmailer.command.spool_send')->run(new ArgvInput(array()), new ConsoleOutput());
Dies ist definitiv die bessere Antwort. –
Ja, und dies ist eine offizielle Methode - http://symfony.com/doc/3.2/console/command_in_controller.html –
wie ein Charme :) Danke Carlos – Tom