public function __construct(\Swift_Transport_EsmtpTransport $transport, ConfigManager $config, ContainerInterface $container) { $mandrillApiKey = $config->get('atwix_mandrill.api_key'); $mandrillApiUsername = $config->get('atwix_mandrill.api_username'); if ($config->get('atwix_mandrill.enable_mandrill_integration') && !empty($mandrillApiKey) && !empty($mandrillApiUsername)) { $handlers = $transport->getExtensionHandlers(); /** @var \Swift_Transport_Esmtp_AuthHandler $handler */ $handler = reset($handlers); $transport->setHost($config->get('atwix_mandrill.smtp_host')); $transport->setPort($config->get('atwix_mandrill.smtp_port')); $handler->setPassword($mandrillApiKey); $handler->setUsername($mandrillApiUsername); \Swift_Mailer::__construct($transport); } else { $mailer = $container->get('mailer'); parent::__construct($mailer, $container); } }
/** * @param \Swift_Transport_EsmtpTransport $transport * * @return DirectMailer */ protected function addXOAuth2Authenticator($transport) { $handlers = $transport->getExtensionHandlers(); $handlers = is_array($handlers) ? $handlers : []; foreach ($handlers as $handler) { if ($handler instanceof \Swift_Transport_Esmtp_AuthHandler) { $authenticators = $handler->getAuthenticators(); $isOAuth2Exist = false; foreach ($authenticators as $authenticator) { if ($authenticator instanceof \Swift_Transport_Esmtp_Auth_XOAuth2Authenticator) { $isOAuth2Exist = true; } } if (!$isOAuth2Exist) { $authenticators[] = new \Swift_Transport_Esmtp_Auth_XOAuth2Authenticator(); $handler->setAuthenticators($authenticators); } } } return $this; }