複数の電子メールを送信するアプリケーションを使用していますが、タイムアウト エラーが返されることがあります。そのための解決策は、キューを使用してバックグラウンドでメールを送信することだと思いますが、それを実装するのに問題があります。
たとえば、私のコントローラーにはそれがあり、動作します:
$data = array(
'name' => $tecnic->name,
'email' => $tecnic->email,
'code' => $code
);
Mail::send('email-to-tecnico', $data, function($message) use ($data)
{
$message->from('no-reply@domain.pt' , '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('no-reply@domain.pt' , 'Title');
$message->to($data['email'], $data['name'])->subject('Subject');
});
}
}
そして、コントローラーで Mail::send を削除し、これを追加します:
SendStartPatEmail::dispatch($data);
これを実行すると、ジョブはジョブテーブルに作成されましたが、メールは送信されず、試行列は 0 です。
これはエラーを返しません。
私が間違っていることは何ですか?