1

複数の電子メールを送信するアプリケーションを使用していますが、タイムアウト エラーが返されることがあります。そのための解決策は、キューを使用してバックグラウンドでメールを送信することだと思いますが、それを実装するのに問題があります。

たとえば、私のコントローラーにはそれがあり、動作します:

$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 です。

これはエラーを返しません。

私が間違っていることは何ですか?

4

1 に答える 1