123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?php
-
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- namespace Symfony\Bundle\SwiftmailerBundle\Command;
-
- use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Output\OutputInterface;
- use Symfony\Component\Console\Input\InputOption;
-
- /**
- * Send Emails from the spool.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Clément JOBEILI <clement.jobeili@gmail.com>
- */
- class SendEmailCommand extends ContainerAwareCommand
- {
- /**
- * @see Command
- */
- protected function configure()
- {
- $this
- ->setName('swiftmailer:spool:send')
- ->setDescription('Sends emails from the spool')
- ->addOption('message-limit', 0, InputOption::VALUE_OPTIONAL, 'The maximum number of messages to send.')
- ->addOption('time-limit', 0, InputOption::VALUE_OPTIONAL, 'The time limit for sending messages (in seconds).')
- ->addOption('recover-timeout', 0, InputOption::VALUE_OPTIONAL, 'The timeout for recovering messages that have taken too long to send (in seconds).')
- ->setHelp(<<<EOF
- The <info>swiftmailer:spool:send</info> command sends all emails from the spool.
-
- <info>php app/console swiftmailer:spool:send --message-limit=10 --time-limit=10 --recover-timeout=900</info>
-
- EOF
- )
- ;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $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));
- }
- }
- }
|