Как настроить откат на фреймворке Swift Mailer в php

1

Как установить резервную копию, для быстрой почтовой программы и проверить, работает ли мой резервный код?. Я получил этот стандартный код из инструкции.

$transport = Swift_SmtpTransport::newInstance(SMTP_HOST, SMTP_PORT, 'tls')
->setUsername(SMTP_USERNAME)
->setPassword(SMTP_PASSWORD)
;

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('S5_Dagsrapport_' . $dato1)
->setFrom(array($from => 'S5'))
->setTo(array($to => $navn))
->setBody($body, 'text/html')
->addPart($body, 'text/html')
->attach(Swift_Attachment::newInstance($attachment, 's5_dagsreport_' . $dato1 . '.xls',          'application/xls'))
;
// Send the message
$mailer->send($message);

если я использую

if(
$mailer->send($message)){
echo "Sent\n";
}else{
echo "Failed\n";
}

он показывает отправленные, но если я помещаю неверную информацию в параметры, она не показывает Failed. Я читал, что другое решение - использовать

Swift_Transport_FailoverTransport

но я не могу найти примеры в Интернете, на этом.

что является простым способом сделать резервную копию в Swift_mailer,

Теги:
swiftmailer

2 ответа

1
Лучший ответ

Я могу сказать, из класса Swift_Transport_FailoverTransport продолжается.

https://github.com/swiftmailer/swiftmailer/blob/master/lib/classes/Swift/Transport/LoadBalancedTransport.php

Содержит метод setTransports. Там вы можете установить транспорты, чтобы использовать, когда один из них не работает. Это немного похоже на цепочку. Сам класс является экземпляром Swift_Transport который содержит несколько других транспортов.

Создайте транспорты, которые вы собираетесь использовать для подключения к почтовым серверам. Затем добавьте их в экземпляр Swift_Transport_FailoverTransport. Затем используйте этот экземпляр в качестве вашего почтового транспорта.

0

Для всех, кто хочет знать, как использовать это в Symfony, вот мое решение. Создайте класс, который расширяет Swift_Transport_FailoverTransport.

namespace AppBundle\Util;

class App_Swift_Transport_FailoverTransport extends \Swift_Transport_FailoverTransport
{
    /**
     * @param \Swift_Mailer[] $mailers
     */
    public function __construct(array $mailers)
    {
        parent::__construct();

        /** @var \Swift_Mailer $mailer */
        foreach ($mailers as $mailer) {
            $this->_transports[] = $mailer->getTransport();
        }
    }
}

В вашем config.yml под ключом swiftmailer расширьте ваши почтовые программы:

swiftmailer:
    default_mailer:       default
    mailers:
        default:
            transport: 'app_failover'
        # example mailhog config 
        main:   
            disable_delivery: false
            delivery_addresses: null
            transport: smtp
            host: 127.0.0.1
            port: 1025
            username: null
            password: null
        # example for sendgrid 
        fallback:
            disable_delivery: false
            delivery_addresses: null
            encryption: 'ssl'
            transport: 'smtp'
            host: 'smtp.sendgrid.net'
            port: '465'
            username: 'apikey'
            password: 'mypassword'

И последнее, но не менее App_Swift_Transport_FailoverTransport: App_Swift_Transport_FailoverTransport определенные почтовые программы в ваш конструктор App_Swift_Transport_FailoverTransport:

swiftmailer.mailer.transport.app_failover:
    class: AppBundle\Util\App_Swift_Transport_FailoverTransport
    arguments:
        $mailers: ['@swiftmailer.mailer.main', '@swiftmailer.mailer.fallback']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню