diff --git a/app/AttendeeMessage.php b/app/AttendeeMessage.php index 67b26e1..a507759 100644 --- a/app/AttendeeMessage.php +++ b/app/AttendeeMessage.php @@ -13,8 +13,15 @@ class AttendeeMessage extends Model return $this->belongsTo(Concert::class); } - public function recipients() + public function orders() { - return $this->concert->orders()->pluck('email'); + return $this->concert->orders(); + } + + public function withChunkedRecipients($chunkSize, $callback) + { + $this->orders()->chunk($chunkSize, function ($orders) use ($callback) { + $callback($orders->pluck('email')); + }); } } diff --git a/app/Jobs/SendAttendeeMessage.php b/app/Jobs/SendAttendeeMessage.php index 4b4fae9..60a5bc5 100644 --- a/app/Jobs/SendAttendeeMessage.php +++ b/app/Jobs/SendAttendeeMessage.php @@ -33,8 +33,10 @@ class SendAttendeeMessage implements ShouldQueue */ public function handle() { - $this->attendeeMessage->recipients()->each(function ($recipient) { - Mail::to($recipient)->send(new AttendeeMessageEmail($this->attendeeMessage)); + $this->attendeeMessage->withChunkedRecipients(20, function ($recipients) { + $recipients->each(function ($recipient) { + Mail::to($recipient)->queue(new AttendeeMessageEmail($this->attendeeMessage)); + }); }); } }