<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\SerializesModels; use App\Models\Invoice; class InvoiceEmail extends Mailable implements ShouldQueue { use Queueable, SerializesModels; protected Invoice $io; /** * Create a new message instance. * * @param Invoice $o */ public function __construct(Invoice $o) { $this->io = $o; $this->queue = 'user'; } /** * Get the message envelope. */ public function envelope(): Envelope { return new Envelope( subject: sprintf('Invoice %d for services, due %s', $this->io->lid, $this->io->due_at->format('Y-m-d')), ); } /** * Get the message content definition. */ public function content(): Content { return new Content( markdown: 'mail.invoice', with: [ 'io'=>$this->io, 'site'=>$this->io->site, ] ); } }