mailable = $mailable; $this->tries = property_exists($mailable, 'tries') ? $mailable->tries : null; $this->timeout = property_exists($mailable, 'timeout') ? $mailable->timeout : null; } /** * Handle the queued job. * * @param \Illuminate\Contracts\Mail\Factory $factory * @return void */ public function handle(MailFactory $factory) { $this->mailable->send($factory); } /** * Get the display name for the queued job. * * @return string */ public function displayName() { return get_class($this->mailable); } /** * Call the failed method on the mailable instance. * * @param \Throwable $e * @return void */ public function failed($e) { if (method_exists($this->mailable, 'failed')) { $this->mailable->failed($e); } } /** * Get the retry delay for the mailable object. * * @return mixed */ public function retryAfter() { if (! method_exists($this->mailable, 'retryAfter') && ! isset($this->mailable->retryAfter)) { return; } return $this->mailable->retryAfter ?? $this->mailable->retryAfter(); } /** * Prepare the instance for cloning. * * @return void */ public function __clone() { $this->mailable = clone $this->mailable; } }