コード例 #1
0
 /**
  * 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);
 }