puz/dynamic-mail

在运行时更改Laravel邮件驱动配置。

0.1.2 2020-08-04 18:58 UTC

This package is auto-updated.

Last update: 2024-09-05 03:54:50 UTC


README

A laravel package for changing email setting in runtime.

注意: 我已将要求设置为5.4,因为这是最新版本。尚未尝试其他版本,也未进行测试。如果您想使用此包为更早版本的laravel,请创建问题,如果技术可行,我会实现它。

安装

  1. composer require puz/dynamic-mail
  2. \Puz\DynamicMail\DynamicMailServiceProvider::class, 添加到您的活动提供者列表中。
  3. 将外观添加到别名列表。您可以选择覆盖Laravel自己的外观(无需担心,此包仅扩展功能)或添加一个专门用于动态邮件配置的新外观。
<?php
// ...
return [
    // ...
    'aliases' => [
        // ...
        // Overwrite Laravel mailer
        'Mail' => Puz\DynamicMail\Facades\DynamicMail::class,
        // Own mailer
        'DynamicMail' => Puz\DynamicMail\Facades\DynamicMail::class,
    ]
];
  1. 您几乎准备好了!

如何使用它

在示例中,我已经用这个包的外观覆盖了Laravel邮件器外观。

假设你有以下三种情况

  1. 您使用mailgun驱动,但需要从另一个域名发送
  2. 您使用smtp驱动,但需要更改为已定义在 config/services.php 中的不同驱动程序
  3. 您使用smtp驱动,但需要更改为未定义的另一个服务

以下是操作方法!

<?php
// 1
Mail::with(['domain' => 'another.domain.tld'])->to('..')->send('..');

// 2
Mail::via('mailgun')->to('..')->send('..');

// 3
Mail::via('mailgun')->with(['domain' => 'hello.tld', 'secret' => 'https://www.youtube.com/watch?v=Iz-8CSa9xj8'])->to('..')->send('..');

关于方法的简要说明

via 方法允许您更改驱动程序。每次您使用 via 方法时,它都会创建一个新的邮件器实例。这样您仍然可以使用默认的邮件器。它以字符串作为第一个参数,但允许您在第二个参数中直接设置配置(类似于 with)。

with 是用于设置配置的。它接受一个数组,并使用与在 config/services.php 中相同的数组。

支持的驱动程序

我已将其设置为仅允许使用Laravel的一些集成邮件服务。以下是以下服务:

  • smtp
  • sendmail
  • ses
  • mailgun
  • mandrill