private function createMailer() { if (count($this->transports) === 1) { $transport = $this->createTransport($this->transports[0]); } else { $transports = []; foreach ($this->transports as $transportConfig) { $transports[] = $this->createTransport($transportConfig); } $transport = new \Swift_FailoverTransport(); $transport->setTransports($transports); } $mailer = new \Swift_Mailer($transport); if ($this->transportLog) { $mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin(new LogAdapter($this->getLogger()))); } return $mailer; }
<?php /** * 240-transport-failover.php */ require_once '../vendor/autoload.php'; require_once './config.php'; // POINT of this sample $transport1 = Swift_SmtpTransport::newInstance(SMTP_HOST, SMTP_PORT); $transport2 = Swift_SmtpTransport::newInstance(SMTP_HOST2, SMTP_PORT2); $transport = Swift_FailoverTransport::newInstance([$transport1, $transport2]); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance(); $message->setFrom(MAIL_FROM)->setSubject('FailoverTransport sample')->setBody('This is a mail.'); $recipients = [MAIL_TO, MAIL_TO2]; $total = 0; foreach ($recipients as $recipient) { $message->setTo($recipient); $result = $mailer->send($message); $total += $result; }