Как настроить тему электронной почты с помощью Laravel 5.5

У меня есть событие, которое вызывает слушателя, как только в системе создается транспортное средство.

Это мое событие:

class VehicleCreated
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    private $vehicle;

    public function __construct(Vehicle $vehicle)
    {
        $this->vehicle = $vehicle;
    }

    public function getVehicle()
    {
        return $this->vehicle;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

Это мой слушатель:

class SendSchedulingConfirmationListener implements ShouldQueue
{
    use InteractsWithQueue;

    public function handle(VehicleCreated $event)
    {
        $vehicle = $event->getVehicle();
        $lead = $vehicle->lead;
        Mail::to($lead->email)
            ->queue(new SchedulingConfirmation($vehicle, $lead));
    }
}

Я использовал команду artisan для создания электронной почты:

php artisan make:mail SchedulingConfirmation --markdown=emails.leads.scheduling.confirmation

У меня возникли проблемы с настройкой темы электронной почты, в настоящее время мой класс выглядит следующим образом:

class SchedulingConfirmation extends Mailable
{
    use Queueable, SerializesModels;

    public $vehicle;
    public $lead;

    public function __construct(Vehicle $vehicle, Lead $lead)
    {
        $this->vehicle = $vehicle;
        $this->lead = $lead;
    }

    public function build()
    {
        return $this
            ->subject('This is my subject')
            ->markdown('emails.leads.scheduling.confirmation');
    }
}

Когда я запускаю электронную почту, она поступает в mailtrap с темой Подтверждения Планирования

Всего 2 ответа


Вы можете просто передать тему, когда будете обновлять почту:

$subject = 'truly awesome subject line'

Mail::to($lead->email)
        ->queue(new SchedulingConfirmation($vehicle, $lead, $subject));

Поэтому в вашем классе просто добавьте $subject в качестве параметра в конструкторе:

class SchedulingConfirmation extends Mailable
{
    use Queueable, SerializesModels;

    public $vehicle;
    public $lead;

    public function __construct(Vehicle $vehicle, Lead $lead, $subject)
    {
        $this->vehicle = $vehicle;
        $this->lead = $lead;
        $this->subject = $subject
    }

    public function build()
    {
        return $this
            ->subject($this->subject)
            ->markdown('emails.leads.scheduling.confirmation');
    }
}

задайте объект в конструкторе Mailable

    class SchedulingConfirmation extends Mailable
    {
        use Queueable, SerializesModels;

        public $vehicle;
        public $lead;

        public function __construct(Vehicle $vehicle, Lead $lead)
        {
            $this->vehicle = $vehicle;
            $this->subject('This is my subject');
            $this->lead = $lead;
        }

        public function build()
        {
            return $this
                ->markdown('emails.leads.scheduling.confirmation');
        }
    }

Есть идеи?

10000