Свифт Мейлер отправить в очередь для последующей доставки - PullRequest
8 голосов
/ 28 января 2012

При использовании http://swiftmailer.org можно ли отправить сообщение в почтовую очередь, чтобы php вернулся сразу, а не отправлял сообщение прямо сейчас?

Ответы [ 3 ]

6 голосов
/ 13 октября 2016

Это старый вопрос, но так как он появился в моем поиске в Google, я отвечу на него тем, что выяснил.

ДА!Swiftmailer имеет возможность писать в спул вместо отправки сразу.Реализация довольно проста:

$spool = new Swift_FileSpool('/where/you/want/your/spool');
$transport = Swift_SpoolTransport::newInstance($spool);
$mailer = Swift_Mailer::newInstance($transport);

Это говорит swiftmailer записывать сообщения на диск, а не отправлять их.Затем с помощью задания cron или другого триггера отправьте сообщения, используя что-то вроде:

$spool = new Swift_FileSpool('/where/you/put/your/spool');
$spool_transport = Swift_SpoolTransport::newInstance($spool);

// Create the smtp transport.

$smtp_transport = Swift_SmtpTransport::newInstance('your.smtp.host', 25);

// Get the messages from the spool
$spool = $spool_transport->getSpool();

// Send the messages via the real transport.
$sent = $spool->flushQueue($smtp_transport);
1 голос
/ 28 января 2012

Вы не можете.swiftmailer / php на самом деле не доставляет почту для вас, она просто передает ее на SMTP-сервер, и этот сервер выполняет доставку для вас.Вы должны указать SMTP не обрабатывать исходящую очередь, чтобы «остановить» доставку.

В терминах реального мира swift / php просто идет в угол и бросает конверт в почтовый ящик.Почтовый грузовик обнаруживается сразу после этого и запускает процесс отправки почты по пути через почтовую систему.Но это полностью выходит за рамки PHP.

0 голосов
/ 17 июня 2012

Если вы используете транспорт sendmail, он должен сразу вернуться.

From https://github.com/swiftmailer/swiftmailer/blob/4.1/doc/sending.rst:

Обычно процесс sendmail реагирует быстро, так как он спулинговаетВаши сообщения на диск перед их отправкой.

Вы также можете посмотреть спулинг: http://symfony.com/doc/current/cookbook/email/spool.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...