为我的电子邮件模板使用默认的 Laravel 电子邮件布局

Posted

技术标签:

【中文标题】为我的电子邮件模板使用默认的 Laravel 电子邮件布局【英文标题】:Use default Laravel email layout for my email templates 【发布时间】:2021-04-13 14:22:21 【问题描述】:

我有一个像这样的 Laravel 可邮寄:

...
public function build()


    return $this->subject('Ticket Created ['.$this->ticket->ticket_code.']')
        ->view('emails.support.ticketcreated')->with([
            'ticket' => $this->ticket
        ]);

然后我的视图目录中有一个电子邮件模板:

<div class="card">
    <div class="card-header bg-dark">
        Ticket Created [ $ticket->ticket_code ]
    </div>
    <div class="card-body">
        <p>Thanks for creating a ticket!  We will get back to you as soon as possible</p>
        <p><a href=" $ticket->url ">To view your ticket click here</a></p>
    </div>
</div>

我想将其包装在默认的 Laravel 电子邮件模板中(因此将以上所有内容放入布局中的 $slot 部分)

我使用以下方式发布了 Laravel 电子邮件模板:

php artisan vendor:publish --tag=laravel-mail

我可以在下面看到我想使用的布局文件:

resources/views/vendor/mail/html/layout.blade.php

问题是我似乎无法使用此布局。

我尝试了以下方法(但都失败了):

    用包装电子邮件模板,但它只是尝试使用我的应用程序布局(而不是邮件布局)。

    使用@extends('vendor.mail.html.layout')@section('slot')

    尝试添加 ->layout('vendor.mail.html.layout');到可邮寄build() 中的 view() 末尾(只是给出未找到的错误方法)

如何在我的电子邮件中使用此布局。请注意,我不想创建单独的重复布局,因为那样我将有两个布局要管理。

【问题讨论】:

可以this 可以帮助你。还有很多其他有用的答案 【参考方案1】:

Laravel 中的默认邮件模板布局这里是的官方链接:Writing Markdown Messages

这是我的邮件控制器

<?php

namespace App\Mail;

use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class NewUserRegistration extends Mailable

    use Queueable, SerializesModels;
    protected $user;

    /**
     * Create a new message instance.
     *
     * @param $user
     */
    public function __construct(User $user)
    
        $this->user = $user;
    

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    
        return $this->to($this->user->email,$this->user->first_name.' '.$this->user->last_name)
                    ->cc('ccemail@ccemail.com','CC USER NAME')
                    ->from(env('MAIL_FROM_ADDRESS'),env('MAIL_FROM_NAME'))
                    ->subject('subject_of_your_email')
                    ->markdown('emails.registration',[  // This is very important line
                        'first_name'    => $this->user->first_name,
                        'last_name'     => $this->user->last_name,
                    ]);
    

这是我执行电子邮件的另一个控制器

$getUserData = User::where('id',$userId)->first();
Mail::to($getUserData)->send(new NewUserRegistration($getUserData));

【讨论】:

以上是关于为我的电子邮件模板使用默认的 Laravel 电子邮件布局的主要内容,如果未能解决你的问题,请参考以下文章

LARAVEL:发送存储在 DB 中的邮件,使用 WYSIWYG 编辑器制作

带参数的 Laravel 电子邮件模板路由

Laravel电子邮件模板网址无法在Gmail中使用

设置山魈模板 Laravel

Laravel 在不破坏身份验证的情况下加密用户电子邮件

是否可以在 Laravel 的 HTML 电子邮件中包含图像