Laravel — Электронная почта в очереди не работает

У меня есть приложение, которое отправляет несколько электронных писем, иногда оно возвращает ошибку тайм-аута. Поэтому я думаю, что решение этой проблемы — отправка электронных писем в фоновом режиме с очередями, но у меня возникли проблемы с реализацией.

Например, в моем контроллере у меня есть это и работает:

$data = array(
'name' => $tecnic->name,
'email' => $tecnic->email,
'code' => $code
);
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('[email protected]' , 'Title');
$message->to($data['email'], $data['name'])->subject('subject');

});

Затем я создаю Job SendStartPatEmail и добавьте это:

use Mail;
class SendStartPatEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

private $data;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}

/**
* Execute the job.
*
* @return void
*/
public function handle(Mailer $mailer)
{
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('[email protected]' , 'Title');

$message->to($data['email'], $data['name'])->subject('Subject');

});
}
}

И в контроллере я удаляю Mail :: send и добавляю это:

SendStartPatEmail::dispatch($data);

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

Это не возвращает никакой ошибки.

Что я делаю не так?

1

Решение

Для запуска заданий в очереди в таблице заданий, вам нужно запустить php artisan queue:work,

Я рекомендую прочитать документацию о супервизоре, чтобы убедиться, что работник всегда работает в тех проектах, где он вам нужен:

Конфигурация Laravel Supervisor

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]