niclas-van-eyk / laravel-mail-in-the-middle
将邮件发送到文件系统/数据库,并在浏览器中预览
Requires
- php: >= 7.2
- ext-json: *
- laravel/framework: ^7.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- mockery/mockery: ^1.3
- nunomaduro/collision: ^4.1
- nunomaduro/larastan: ^0.5.5
- orchestra/testbench: ^5.1
- phpstan/phpstan: ^0.12.17
This package is auto-updated.
Last update: 2024-09-21 22:57:42 UTC
README
像使用Mailtrap等服务一样预览应用程序发送的邮件。您还可以查看Mailable的模板源和视图数据。
如果您使用Mail::send(new MyMailable())
发送邮件,邮件将存储在您的数据库或文件系统中。然后您可以访问localhost:8000/mails
(或您的APP_URL
设置为的任何内容),以查看系统发送的最新邮件。UI显示了元数据,如主题、发件人、收件人、抄送、密送,以及Laravel特定的信息,如邮件模板的源或提供给模板的数据。
设置
安装
通过Composer要求库
composer require niclas-van-eyk/laravel-mail-in-the-middle --dev
将以下条目添加到您的config/mail.php
中的mailers
数组
如果您在config/mail.php
中没有看到'mailers'
部分,请展开此部分
这可能是您正在使用低于*必需* 7.2的Laravel版本,或者您是使用较旧的配置方案启动的项目,然后从那里更新了Laravel。对于后者,只需将您的
'MAIL_DRIVER'
环境变量设置为mail-in-the-middle
即可。// ... 'mailers' => [ // the standard mailers, the one before this is usually 'array'... // This entry needs to be added 'mail-in-the-middle' => [ 'transport' => 'mail-in-the-middle', ], ], // rest of the configuration...
在您的.env
文件中添加/替换以下部分
MAIL_MAILER=mail-in-the-middle
如果您通过默认的Mailer
(例如Mail::to('recipient@company.org')->send(new MyMailable())
)发送Mailable
,它们现在将显示在UI中。如果APP_DEBUG
设置为true,则UI可用。否则,可以通过设置MAIL_IN_THE_MIDDLE_ENABLED
环境变量或手动配置config/mail-in-the-middle.php
文件的'register_routes'
-值来启用/禁用。
警告:使用其他Mailer
发送的任何邮件,例如,如果您明确指定使用Mail::mailer('mailgun')->send(new MyMailable())
通过Mailgun发送Mailable
,将直接发送给收件人。官方文档提供了更多信息。
配置
目前,该软件包提供了两种存储邮件的选项
filesystem
驱动程序(默认)将邮件存储在磁盘上database
驱动程序将它们保存到数据库表
选择filesystem
驱动程序作为默认存储选项,因为它只需安装即可。如果没有设置disk
,将在storage/app/mail-in-the-middle
下的本地文件夹中创建并使用。
如果您的应用程序发送了大量的邮件,您绝对应该考虑使用database
驱动程序!您可以通过设置环境变量MAIL_IN_THE_MIDDLE_STORAGE_DRIVER
为config/mail-in-the-middle.php
中的选项之一来配置驱动程序。如果您使用的是database
驱动程序,必要的迁移将自动加载,只需确保在发送第一封邮件之前调用php artisan migrate
即可。
对于所有配置选项,例如您可以通过哪个路径访问ui,请参阅mail-in-the-middle.php
配置,它可以发布并调整到您的config/
目录。
日常维护
由于您更有可能对最近发送的邮件感兴趣,例如,随着系统存储的邮件越来越多,filesystem
驱动程序会越来越慢,建议您定期删除旧邮件。
这可以通过使用红色删除按钮在UI中完成,或者通过安排一个定期运行的命令来清理经过一定年龄的邮件。如果您已经通过添加以下内容到您的App\Console\Kernel::schedule
方法来设置调度,这可以相当容易地完成
class Kernel extends ConsoleKernel { // ... protected function schedule(Schedule $schedule) { $schedule ->command("mitm:clear-mails-older-than 'last week'") ->daily(); } // ...
或者,您可以通过在选择的shell中执行php artisan mitm:clear-mails-older-than 'one week'
来手动运行该命令。
更多截图
源码
在这个标签页中,您可以查看您的.blade.php
视图或markdown模板的内容。如果您有关于如何添加语法高亮的好主意,请发给我消息,因为我没有找到highlightjs或prism(我的最后一个想法是尝试使用monaco编辑器和blade语言扩展)的版本)。
查看数据
此标签页显示用于渲染电子邮件html的数据,作为var_dump
。如果对象不是整数或字符串这样的标量值,您可以通过旁边的黑色箭头折叠/打开它们来检查其属性。
范围、功能添加和贡献
这个包最初的使用案例是为了提供一个项目经理或测试人员能够轻松检查应用程序发送的邮件,而无需将邮件发送给潜在用户的风险。此外,邮件永远不会离开您的系统。
所以如果您从csv文件导入用户并发送初始密码,您可以在开发或qa系统上安全地运行导入器,而不会意外地向真实用户发送邮件。
由于这个用例已经得到满足,因此在未来不太可能添加更多高级功能,如高级搜索能力、多个收件箱或其他形式的访问控制。话虽如此,如果您想贡献这样的功能,我对任何PR都持开放态度,但建议您首先提交问题,描述您建议的功能添加以获取一些反馈。
已知问题
如果您在Windows上将"minimum-stability"
设置为"lowest"
,则此包似乎无法正确工作。由于我目前没有访问Windows机器,我无法在本地重现此问题。