@lexxvlad

Laravel 5.2 — как отправить письма через очередь, через отдельный коннектор?

В Laravel я не очень то силен, только разбираюсь с ним. Работаю с 5,2

Задача есть - отправки писем не напрямую во время исполнения кода, а отложено. В Laravel есть очереди. У них там разные драйверы даже есть как оказалось
В том проекте, с которым я работаю, очереди идут через iron.io

Но внешнее решение для отправки писем с вложениями не вариант, так как это опять же задержки. Лучше это именно сделать локально. Тем более что по факту письма уходят потом череp mailtrap.

В общем код отправки сейчас такой:

Mail::send($email_template, $view_vars, static function ($m) use ($customer, $company, $email_subject, $users, $invoice, $invoice_name) { $m->from($company->send_email, $company->name); $m->to($users, $customer->getFullName())->subject($email_subject); $m->attachData($invoice, $invoice_name); });

Чтобы письма уходили в локальную очередь, можно ли сделать так:

Mail::queue(.......)->onConnection('database');
?

И дальше второй вопрос. Если да, то еще какойто дополнительный код нужен, чтобы они фактически отправлялись или нет? Таблица Jobs уже создана.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
agoalofalife
@agoalofalife
Team Lead
Все же написано в докуменатции

Можно через helper dispatch(new App\Jobs\SendEmail);
В контроллере
$job = (new SendEmail($user))->onQueue('emails');
$this->dispatch($job);

Если надо указываете connection.
Если надо указываете очередь onQueue, оформляя все это в цепочку.

ну далее например настраиваете supervisor
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы