statikbe/laravel-mail-template-engine

为 Laravel 定制的邮件模板

1.2.0 2023-06-15 07:38 UTC

This package is auto-updated.

Last update: 2024-09-15 10:11:35 UTC


README

Laravel 邮件模板引擎可以使您为事务性邮件创建邮件模板。这些邮件模板可以包含内容和接收者变量,当触发邮件时可以填充。

此包与我们的Laravel Nova 邮件编辑器协同工作,它提供了一个用户界面,允许内容管理员编辑翻译。

工作原理

该包结合了3组不同的数据来发送事务性邮件。

  1. 首先,有邮件类:在这里您定义一个名称、内容变量和接收者变量。
  2. 接下来,您将邮件模板存储在数据库中,您可以使用 Laravel Nova 邮件编辑器 在 Nova 中执行此操作。或者,您可以编写自己的接口以保存模板。
  3. 最后,您调用邮件类并填写其变量(内容和接收者)。此时,引擎将寻找使用此类的所有模板,用提供的变量填充它们,并发送给选定的接收者。

安装

  1. 使用 composer 安装
composer require statikbe/laravel-mail-template-engine
  1. 发布邮件模板迁移和配置
php artisan vendor:publish --tag=mail-template-engine
  1. 运行邮件模板迁移
php artisan migrate

如何使用

邮件类

此类将决定您的邮件模板中哪些内容变量可用,并将用于决定何时发送邮件。

您可以使用以下命令生成邮件

php artisan make:mail-class SomeEventMail

创建邮件类后,将其添加到配置 mail-template-engine.php 中的邮件。

Mail 类的一个示例可以在 src/Mails/ResetPassword.php 中找到。

<?php

namespace Statikbe\LaravelMailEditor\Mails;

use Statikbe\LaravelMailEditor\AbstractMail;

class ResetPasswordMail extends AbstractMail
{
    public static function name(){
        return __('ResetPasswordTemplate');
    }

    public static function getContentVariables(){
        return [
            'url' => __('Reset password URL'),
        ];
    }

    public static function getRecipientVariables(){
        return [
            'user' => __('User'),
        ];
    }
}

邮件模板

邮件模板存储在数据库中。它使用模型 Statikbe\LaravelMailEditor\MailTemplate 并可以像任何其他模型一样创建。邮件模板可以是本地化的,我们使用 Spatie 的可翻译包来实现这一点。更多信息可以在他们的页面找到:Laravel Translatable

您可以使用相应邮件类的键将变量数据放入邮件模板中。

MailTemplate 模型包括

如果您正在使用 Nova,则可以使用 Nova 邮件编辑器:一个用于编辑和创建邮件模板的工具。

调用邮件类

为了发送邮件,您需要提供内容和接收者变量,然后发送邮件对象。
邮件对象现在将在数据库中寻找使用此邮件类的任何邮件模板,构建它并发送邮件。

示例

use Statikbe\LaravelMailEditor\Mails\ResetPasswordMail;

$contentVars = [
    'nl' => [ //Optional wrap with locale
        'url' => $verificationUrl,
    ],
];
$recipientVars = [
    'user' => [
        //Use an array with mail and optional locale
        [ 
            'mail' => $user->email, 
            'locale' => 'en',
        ],
        //Or use an object
        $user 
    ]
];

$attachments = [
    'nl' => [ //Optional wrap with locale
        'user' => [ 
            //Using laravel mail attach functionality
            [ 
                'path' => $path, 
                'options' => [
                    'as' => 'factuur.pdf',
                    'mime' => 'application/pdf',
                ] 
            ],
            //Or add an entire file
            $file 
        ],
    ]
];

$mail = new ResetPasswordMail();
$mail->sendMail($contentVars, $recipientVars);

内容变量

在此数组中,您为每个在邮件模板(s)中使用的键分配值。您在邮件类中的 getContentVariables 中定义接收者。将内容变量用区域设置作为键包装是可选的。

接收者变量

在此数组中,您为邮件模板(s)中的每个接收者分配邮件和区域设置。您在邮件类中的 getRecipientVariables 中定义接收者。有关添加接收者变量的更多选项,请参阅 \Statikbe\LaravelMailEditor\AbstractMail::formatRecipientArray

附件变量

在这个数组中,您为邮件模板中的每个收件人分配附件。您在邮件类中的 getRecipientVariables 方法中定义收件人。有关如何添加收件人变量的更多选项,请查看 \Statikbe\LaravelMailEditor\AbsractMail::formatRecipientArray。将附件包裹在以区域设置为键的包装中是可选的。

样式

该软件包提供的默认设计来自这里。您可以发布视图并对其进行自定义!

php artisan vendor:publish --provider="Statikbe\LaravelMailEditor\MailEditorServiceProvider" --tag=views

您可以通过在配置中的 designs 数组中添加它们来提供您自己的设计。设计是存储您渲染引擎视图的视图目录,例如,默认的HTML引擎期望有一个名为 html.blade.php 的视图。

配置

您可以通过运行以下命令来发布配置

php artisan vendor:publish --tag=mail-template-engine

以下配置字段可用

TODO 记录配置

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件