Я помещаю несколько писем в очередь. Когда я запускаю работника, он успешно обрабатывает все письма, но они не отправляются. Когда я добавляю письмо, которое вызывает исключение, работник уничтожается, и все письма отправляются.
Когда я запускаю bin/console swiftmailer:spool:send
после обработки писем с работником, он показывает:
0 emails sent
Также пытался forceSend()
, тоже не сработало.
Рабочий:
class SendQueuedMailWorker
{
/**
* @var Mailer
*/
private $mailer;
public function __construct(
Mailer $mailer
) {
$this->mailer = $mailer;
}
public function handle(SendQueuedMailCommand $command): void
{
$user = $command->getUser();
$mailContext = [
'user' => $user
];
$message = $this->mailer->compose(
'mail_template',
$mailContext,
null,
$user->getEmail()
);
if ($this->mailer->send($message) === false) {
throw QueuedMailNotSentException::withId($command->getReference());
}
}
}
Swiftmailer:
swiftmailer:
transport: '%mailer_transport%'
encryption: '%mailer_encryption%'
host: '%mailer_host%'
port: '%mailer_port%'
username: '%mailer_user%'
password: '%mailer_password%'
delivery_addresses: '%mailer_delivery_addresses%'
spool: { type: 'memory' }
disable_delivery: '%mailer_disable_delivery%'
Нет сообщений об ошибках, возникающих при использовании очереди.
Вывод на консоль:
Consuming from mailsend queue
[1] Processing payload {"reference":2016320254, "user":"John"}
[1] processed with result: true
[2] Processing payload {"reference":2019990645, "user":"Doe"}
[2] processed with result: true
Как получить сообщения для немедленной отправки?