如何将MailgunTransport中创建的Mailgun ID传递给Laravel中的事件侦听器?

在我的Laravel应用程序中,我有一个事件监听器,当有人添加到课程时会触发该事件,然后向用户发送电子邮件“您已被添加到课程”。

我正在使用Mailgun发送这些电子邮件,并且在此侦听器中,我调用\Mail来构建刀片文件并将电子邮件发送给用户,一切正常。

我的问题是我想存储该Mailgun ID。 Laravel v6中的哪个被添加到Illuminate\Mail\Transport\MailgunTransport@send中,我可以通过调用$message->getId()来访问该ID,我认为可以在vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php中找到

如何返回$message->getId(),以便可以在侦听器中使用它?

在我的监听器\Mail中,我调用模型来创建新发送的电子邮件记录,并且希望能够存储该ID。

下面是我的第一个问题的链接,https://stackoverflow.com/users/2343305/ilgala可以帮忙:

How retrieve Mailgun Delivered Message in Laravel

jiejieyanyanhaohao 回答:如何将MailgunTransport中创建的Mailgun ID传递给Laravel中的事件侦听器?

我也回答了你的老问题。我认为您误会了这一过程。我将在此处为Laravel 6.x创建一个完整的示例,但对于较旧的版本应该相同。

1。配置mailgun

那是容易的部分。只需使用mailgun凭证更改services.php文件,并记住要求作曲者使用guzzlehttp/guzzle软件包,否则您将无法发送电子邮件。然后更改.env文件并将MAIL_DRIVER设置为mailgun。这样,Laravel便知道必须使用该驱动程序来发送电子邮件。

2。创建您的逻辑

比方说,每次客户创建和订购时,您都必须发送一封电子邮件。您将在代码库中的某个地方拥有OrderController的{​​{1}}方法,该方法创建订单并随后发送电子邮件。像

store

自设置Mailgun驱动程序以来,public function store(Request $request) { // Validate your request $this->validate([...]); // Create the order $order = new Order(); $order->fill($request->only([...])); // Save order $order->save(); // Send confirmation email; Mail::to(auth()->user())->send(new OrderCreated($order)); } 门面将自动使用Mail类。

3。创建监听器

my other answer中所述,在MailgunTransport中设置侦听器。然后,一旦创建了侦听器,就可以按以下方式检索Mailgun ID:

EventServiceProvider
本文链接:https://www.f2er.com/2940016.html

大家都在问