getTransport() 공개 메소드

The Transport used to send messages.
public getTransport ( ) : Swift_Transport
리턴 Swift_Transport
예제 #1
0
 /**
  * Delivers an email
  *
  * @param  MailInterface $mail
  * @param  Boolean       $readReceipt
  * @return int           the number of messages that have been sent
  *
  * @throws LogicException In case no Receiver provided
  * @throws LogicException In case a read-receipt is asked but no Emitter provided
  */
 public function deliver(MailInterface $mail, $readReceipt = false, array $attachments = null)
 {
     if (!$mail->getReceiver()) {
         throw new LogicException('You must provide a receiver for a mail notification');
     }
     $message = \Swift_Message::newInstance($this->prefix . $mail->getSubject(), $mail->renderHTML(), 'text/html', 'utf-8');
     $message->addPart($mail->getMessage(), 'text/plain', 'utf-8');
     $message->setFrom($this->emitter->getEmail(), $this->emitter->getName());
     $message->setTo($mail->getReceiver()->getEmail(), $mail->getReceiver()->getName());
     if ($mail->getEmitter()) {
         $message->setReplyTo($mail->getEmitter()->getEmail(), $mail->getEmitter()->getName());
     }
     if (is_array($attachments)) {
         foreach ($attachments as $attachment) {
             $message->attach($attachment->As_Swift_Attachment());
         }
     }
     if ($readReceipt) {
         if (!$mail->getEmitter()) {
             throw new LogicException('You must provide an emitter for a ReadReceipt');
         }
         $message->setReadReceiptTo([$mail->getEmitter()->getEmail() => $mail->getEmitter()->getName()]);
     }
     if (!$this->mailer->getTransport()->isStarted()) {
         $this->mailer->getTransport()->start();
     }
     $ret = $this->mailer->send($message);
     $this->mailer->getTransport()->stop();
     $this->dispatcher->dispatch('phraseanet.notification.sent');
     return $ret;
 }
예제 #2
0
파일: Message.php 프로젝트: cawaphp/email
 /**
  * Create a new Message.
  *
  * @param string $name
  */
 public function __construct(string $name = null)
 {
     $this->mailer = self::mailer($name);
     if (!self::$listener) {
         self::$listener = new Listener();
         $this->mailer->getTransport()->registerPlugin(self::$listener);
     }
     $this->message = new \Swift_Message();
 }
예제 #3
0
 public function postTask(Worker $worker, array $options = null)
 {
     if ($worker instanceof MailerAwareWorker) {
         if ($this->mailer && $this->transport) {
             //Flush the mailer queue, this isn't normally done until the command execution finishes
             $this->mailer->getTransport()->getSpool()->flushQueue($this->transport);
             $this->transport->stop();
             $this->logger->info('Flushed mail queue');
         }
     }
 }
예제 #4
0
 private function _flushEmailer()
 {
     $transport = $this->_mailer->getTransport();
     if (!$transport instanceof \Swift_Transport_SpoolTransport) {
         return;
     }
     $spool = $transport->getSpool();
     if (!$spool instanceof \Swift_MemorySpool) {
         return;
     }
     $spool->flushQueue($this->_transport);
 }
예제 #5
0
 /**
  * Sends a mail.
  *
  * @ParamType("message", type="Abc\Bundle\JobBundle\Job\Mailer\Message")
  * @ParamType("logger", type="@abc.logger")
  *
  * @param Message         $message
  * @param LoggerInterface $logger
  * @throws \Exception Rethrows exceptions thrown by mailer
  */
 public function send(Message $message, LoggerInterface $logger)
 {
     $logger->debug('Send mail {message}', array('message' => $message));
     $mail = $this->mailer->createMessage()->setSubject($message->getSubject())->setFrom($message->getFrom())->setTo($message->getTo());
     $mail->addPart($message->getMessage(), 'text/plain');
     try {
         $this->mailer->send($mail);
         $this->mailer->getTransport()->stop();
     } catch (\Exception $e) {
         $this->mailer->getTransport()->stop();
         throw $e;
     }
 }
예제 #6
0
 /**
  * Constructor
  *
  * @param \Swift_Mailer      $baseMailer
  * @param ContainerInterface $container
  */
 public function __construct(\Swift_Mailer $baseMailer, ContainerInterface $container)
 {
     $this->baseMailer = $baseMailer;
     $this->container = $container;
     $transport = $this->baseMailer->getTransport();
     if ($transport instanceof \Swift_Transport_SpoolTransport) {
         $transport = $this->findRealTransport();
         if (!$transport) {
             $transport = \Swift_NullTransport::newInstance();
         }
     }
     parent::__construct($transport);
 }
 /**
  * {@inheritdoc}
  */
 public function process(ConsumerEvent $event)
 {
     if (!$this->mailer->getTransport()->isStarted()) {
         $this->mailer->getTransport()->start();
     }
     $exception = false;
     try {
         $this->sendEmail($event->getMessage());
     } catch (\Exception $e) {
         $exception = $e;
     }
     $this->mailer->getTransport()->stop();
     if ($exception) {
         throw new $exception();
     }
 }
예제 #8
0
 /**
  * The Transport used to send messages.
  *
  * @return \Swift_Transport|\Swift_SmtpTransport
  */
 public function getTransport()
 {
     if ($this->smtpTransport) {
         return $this->smtpTransport;
     }
     return parent::getTransport();
 }
예제 #9
0
 /**
  * Send a Swift Message instance.
  *
  * @param \Swift_Mime_Message $message
  *
  * @return int
  */
 protected function sendSwiftMessage(Swift_Mime_Message $message) : int
 {
     if ($this->events) {
         $this->events->trigger('events.message.sending', [$message]);
     }
     try {
         return $this->swift->send($message, $this->failedRecipients);
     } finally {
         $this->swift->getTransport()->stop();
     }
 }
예제 #10
0
 /**
  * Send a Swift Message instance.
  *
  * @param  \Swift_Message  $message
  * @return void
  */
 protected function sendSwiftMessage($message)
 {
     if ($this->events) {
         $this->events->fire(new Events\MessageSending($message));
     }
     try {
         return $this->swift->send($message, $this->failedRecipients);
     } finally {
         $this->swift->getTransport()->stop();
     }
 }
예제 #11
0
 /**
  * @param $fromEmail
  * @param BatchEntryMail $batchMail
  * @param $doSend
  */
 private function sendBatchMail($fromEmail, BatchEntryMail $batchMail, $doSend)
 {
     $receivers = $batchMail->getReceiverEntries($this->em);
     $this->writeOutput('Sending "' . $batchMail->getName() . '" mail to ' . count($receivers) . ' people from ' . $fromEmail);
     $spool = $this->mailer->getTransport()->getSpool();
     foreach ($receivers as $receiver) {
         $this->writeOutput(' -> ' . $receiver->getEmail());
         $htmlTemplate = $batchMail->getHtmlTemplate($receiver);
         $plainTextTemplate = $batchMail->getPlainTextTemplate($receiver);
         $templateData = $batchMail->getTemplateData($receiver, $this->em);
         $this->translator->setLocale($receiver->getPool()->getLocale());
         $plainTextBody = $this->twig->render($plainTextTemplate, $templateData);
         $htmlBody = $this->twig->render($htmlTemplate, $templateData);
         $message = \Swift_Message::newInstance()->setSubject($batchMail->getSubject($receiver, $this->translator))->setFrom($fromEmail, $batchMail->getFrom($receiver, $this->translator))->setTo($receiver->getEmail())->setBody($plainTextBody)->addPart($htmlBody, 'text/html');
         if ($doSend) {
             $this->mailer->send($message);
             $spool->flushQueue($this->transport);
             $batchMail->handleMailSent($receiver, $this->em);
         }
     }
 }
예제 #12
0
 /**
  * Force l'envoi des mails en mode Command
  * @return integer Number of emails sent
  */
 public function forceFlushForCommand()
 {
     // L'envoi des emails est déclenché sur une réponse du Kernel (inactif en mode commande)
     $transport = $this->swift->getTransport();
     if (!$transport instanceof \Swift_Transport_SpoolTransport) {
         return;
     }
     $spool = $transport->getSpool();
     if (!$spool instanceof \Swift_MemorySpool) {
         return;
     }
     return $spool->flushQueue($this->mailerRealTransport);
 }
예제 #13
0
 /**
  * Modify transport smtp settings
  *
  * @param UserEmailOrigin $userEmailOrigin
  */
 protected function modifySmtpSettings(UserEmailOrigin $userEmailOrigin)
 {
     $transport = $this->mailer->getTransport();
     if ($transport instanceof \Swift_Transport_EsmtpTransport) {
         $transport->setHost($userEmailOrigin->getSmtpHost());
         $transport->setPort($userEmailOrigin->getSmtpPort());
         $transport->setUsername($userEmailOrigin->getUser());
         $transport->setPassword($this->encryptor->decryptData($userEmailOrigin->getPassword()));
         if ($userEmailOrigin->getSmtpEncryption()) {
             $transport->setEncryption($userEmailOrigin->getSmtpEncryption());
         }
     }
 }
예제 #14
0
 /**
  * Send a Swift Message instance.
  *
  * @param  \Swift_Message  $message
  * @return void
  */
 protected function sendSwiftMessage($message)
 {
     if ($this->events) {
         $this->events->fire('mailer.sending', [$message]);
     }
     if (!$this->pretending) {
         try {
             return $this->swift->send($message, $this->failedRecipients);
         } finally {
             $this->swift->getTransport()->stop();
         }
     } elseif (isset($this->logger)) {
         $this->logMessage($message);
     }
 }
예제 #15
0
 /**
  * @param MauticFactory $factory
  * @param               $mailer
  * @param null          $from
  */
 public function __construct(MauticFactory $factory, \Swift_Mailer $mailer, $from = null)
 {
     $this->factory = $factory;
     $this->mailer = $mailer;
     $this->transport = $mailer->getTransport();
     try {
         $this->logger = new \Swift_Plugins_Loggers_ArrayLogger();
         $this->mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($this->logger));
     } catch (\Exception $e) {
         $this->logError($e);
     }
     $this->from = !empty($from) ? $from : array($factory->getParameter('mailer_from_email') => $factory->getParameter('mailer_from_name'));
     $this->returnPath = $factory->getParameter('mailer_return_path');
     // Check if batching is supported by the transport
     if ($this->factory->getParameter('mailer_spool_type') == 'memory' && $this->transport instanceof InterfaceTokenTransport) {
         $this->tokenizationSupported = true;
     }
     // Set factory if supported
     if (method_exists($this->transport, 'setMauticFactory')) {
         $this->transport->setMauticFactory($factory);
     }
     $this->message = $this->getMessageInstance();
 }
예제 #16
0
 /**
  *
  */
 public function close()
 {
     $this->mail->getTransport()->stop();
 }
예제 #17
0
 /**
  * Returns the current Swift_Transport instance.
  *
  * @return \Swift_Transport
  */
 public function getTransportInstance()
 {
     return $this->mailer->getTransport();
 }
예제 #18
-6
 /**
  * @param $fromEmail
  * @param BatchEntryMail $batchMail
  * @param $doSend
  */
 private function sendBatchMail($fromEmail, BatchEntryMail $batchMail, $doSend)
 {
     $receivers = $batchMail->getReceiverEntries($this->em);
     $this->writeOutput('Sending "' . $batchMail->getName() . '" mail to ' . count($receivers) . ' people from ' . $fromEmail);
     $spool = $this->mailer->getTransport()->getSpool();
     foreach ($receivers as $receiver) {
         try {
             $this->writeOutput(' -> ' . $receiver->getEmail());
             $htmlTemplate = $batchMail->getHtmlTemplate($receiver);
             $plainTextTemplate = $batchMail->getPlainTextTemplate($receiver);
             $templateData = $batchMail->getTemplateData($receiver, $this->em);
             $this->translator->setLocale($receiver->getPool()->getLocale());
             $plainTextBody = $this->twig->render($plainTextTemplate, $templateData);
             $htmlBody = $this->twig->render($htmlTemplate, $templateData);
             $message = \Swift_Message::newInstance()->setSubject($batchMail->getSubject($receiver, $this->translator))->setFrom($fromEmail, $batchMail->getFrom($receiver, $this->translator))->setTo($receiver->getEmail())->setBody($plainTextBody)->addPart($htmlBody, 'text/html');
             if ($doSend) {
                 $this->mailer->send($message);
                 $batchMail->handleMailSent($receiver, $this->em);
             }
         } catch (\Exception $e) {
             $this->writeOutput(sprintf('<error>An error occurred while sending mail for email "%s"</error>', $receiver->getEmail()));
             // mark as handled, as otherwise the system will keep retrying over and over again
             $batchMail->handleMailSent($receiver, $this->em);
         }
     }
     if ($doSend) {
         // only flush queue at the end of a batch
         $spool->flushQueue($this->transport);
     }
 }