/** * Sends the given message. * * The return value is the number of recipients who were accepted for * delivery. * * @param \Swift_Mime_Message $message * @param array $failedRecipients An array of failures by-reference * * @return int The number of recipients who were accepted for delivery * @throws \Exception */ public function send(\Swift_Mime_Message $message, &$failedRecipients = null) { $result = 0; // start a transport if needed $needToStopRealTransport = false; if (!$this->getTransport()->isStarted()) { $this->getTransport()->start(); $needToStopRealTransport = true; } // send a mail $sendException = null; try { if ($this->smtpTransport) { $result = $this->smtpTransport->send($message, $failedRecipients); } else { $result = parent::send($message, $failedRecipients); } } catch (\Exception $unexpectedEx) { $sendException = $unexpectedEx; } // stop a transport if it was started before if ($needToStopRealTransport) { try { $this->getTransport()->stop(); } catch (\Exception $ex) { // ignore errors here } } // rethrow send failure if ($sendException) { throw $sendException; } return $result; }
/** * @param \Swift_Mime_Message $message * @param null $failedRecipients * * @return int * @throws \Exception */ public function send(\Swift_Mime_Message $message, &$failedRecipients = null) { $this->message = $message; $this->prepareMessage(); return parent::send($message, $failedRecipients); }
/** * Tests mail transport settings * * @param Request $request * * @return JsonResponse */ protected function testEmailServerConnectionAction(Request $request) { $dataArray = array('success' => 0, 'error' => ''); if ($this->factory->getUser()->isAdmin()) { $settings = $request->request->all(); $transport = $settings['transport']; switch ($transport) { case 'mautic.transport.mandrill': $mailer = new MandrillTransport(); break; case 'mautic.transport.sendgrid': $mailer = new SendgridTransport(); break; case 'mautic.transport.amazon': $mailer = new AmazonTransport(); break; case 'mautic.transport.postmark': $mailer = new PostmarkTransport(); break; case 'gmail': $mailer = new \Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'); break; case 'smtp': $mailer = new \Swift_SmtpTransport($settings['host'], $settings['port'], $settings['encryption']); break; } if (!empty($mailer)) { if (empty($settings['password'])) { $settings['password'] = $this->factory->getParameter('mailer_password'); } $mailer->setUsername($settings['user']); $mailer->setPassword($settings['password']); $logger = new \Swift_Plugins_Loggers_ArrayLogger(); $mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger)); try { $mailer->start(); $translator = $this->factory->getTranslator(); if ($settings['send_test'] == 'true') { $message = new \Swift_Message($translator->trans('mautic.core.config.form.mailer.transport.test_send.subject'), $translator->trans('mautic.core.config.form.mailer.transport.test_send.body')); $user = $this->factory->getUser(); $message->setFrom(array($settings['from_email'] => $settings['from_name'])); $message->setTo(array($user->getEmail() => $user->getFirstName() . ' ' . $user->getLastName())); $mailer->send($message); } $dataArray['success'] = 1; $dataArray['message'] = $translator->trans('mautic.core.success'); } catch (\Exception $e) { $dataArray['message'] = $e->getMessage() . '<br />' . $logger->dump(); } } } return $this->sendJsonResponse($dataArray); }