mvanduijker / laravel-transactional-mails
此包的最新版本(1.8.0)没有提供许可信息。
在数据库事务提交后发送邮件
1.8.0
2024-03-13 20:29 UTC
Requires
- php: ^7.3|^8.0
- illuminate/database: ~6.0,!=6.9.0|~7.0|~8.0|~9.0|~10.0|~11.0
- illuminate/mail: ~6.0|~7.0|~8.0|~9.0|~10.0|~11.0
Requires (Dev)
- larapack/dd: ^1.0
- orchestra/testbench: ~4.0|~5.0|~6.0|~7.0|~8.0|~9.0
- phpunit/phpunit: ^9.3|^10.0
This package is auto-updated.
Last update: 2024-09-13 21:29:36 UTC
README
在数据库事务提交后发送你的邮件。
此包防止在事务失败时在事务中发送邮件。它将缓冲邮件(或队列中的邮件)并在事务提交后发送(或队列)它们。特别是当在事务中发送电子邮件并在事务提交之前作业提取电子邮件时,作业可能会检索到无效数据。
安装
您可以通过composer安装此包
composer require mvanduijker/laravel-transactional-mails
用法
您只需扩展您的mailable为Duijker\LaravelTransactionalMails\TransactionalMailable
而不是Illuminate\Mail\Mailable
。
<?php namespace App\Mail; use App\Order; use Duijker\LaravelTransactionalMails\TransactionalMailable; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; class OrderShipped extends TransactionalMailable { use Queueable, SerializesModels; /** * The order instance. * * @var Order */ protected $order; /** * Create a new message instance. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->with([ 'orderName' => $this->order->name, 'orderPrice' => $this->order->price, ]); } }
<?php namespace App\Http\Controllers; use App\Order; use App\Mail\OrderShipped; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use App\Http\Controllers\Controller; class OrderController extends Controller { /** * Ship the given order. * * @param Request $request * @param int $orderId * @return Response */ public function ship(Request $request, $orderId) { $order = Order::findOrFail($orderId); DB::transaction(function () use ($order, $request) { $order->ship(); Mail::to($request->user())->send(new OrderShipped($order)); throw new \RuntimeException('Mail won\'t be sent'); }); } }
测试
composer test
变更日志
请参阅变更日志以获取最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
鸣谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。