Laravel 如何将在 MailgunTransport 中创建的 Mailgun ID 传递给事件侦听器?
How To Pass Mailgun ID create in MailgunTransport to an Event Listener, in Laravel?
在我的 Laravel 应用程序中,我有一个事件侦听器,当某人被添加到课程时触发,然后向该用户发送电子邮件 "You've been added to course"。
我正在使用 Mailgun 发送这些电子邮件,在这个监听器中,我调用 \Mail
构建一个 blade 文件并将电子邮件发送给用户,一切正常。
我的问题是我想存储那个 Mailgun ID。 Laravel v6 中的哪个被添加到 Illuminate\Mail\Transport\MailgunTransport@send
中,我可以通过调用 $message->getId()
访问该 ID,我认为可以在 vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php
中找到它
如何return $message->getId()
才能在我的监听器中使用它?
在我的监听器中 \Mail
我调用我的模型来创建新发送的电子邮件记录,我希望能够存储该 ID。
下面是 link 我最初的问题,https://whosebug.com/users/2343305/ilgala 能够提供帮助:
我也回答了你的老问题。我认为你误解了这个过程。我将在这里为 Laravel 6.x 创建一个完整的示例,但它应该与旧版本相同。
1.配置 mailgun
这是简单的部分。只需使用 mailgun 凭据更改 services.php
文件,并记住使用 composer 要求 guzzlehttp/guzzle
包,否则您将无法发送电子邮件。然后更改 .env
文件并将 MAIL_DRIVER
设置为 mailgun
。这样 Laravel 就会知道它必须使用那个驱动程序来发送电子邮件。
2。创建你的逻辑
假设每次客户创建和订购时您都必须发送一封电子邮件。您将在代码库中的某处使用 store
方法创建订单并在之后立即发送电子邮件。像
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));
}
由于您设置了 mailgun 驱动程序,Mail
facade 将自动使用 MailgunTransport
class.
3。创建监听器
如 中所述,在 EventServiceProvider
中设置侦听器。然后,一旦您创建了侦听器,您就可以按如下方式检索 Mailgun ID:
/**
* Handle the event.
*
* @param \Illuminate\Mail\Events\MessageSent $event
* @return void
*/
public function handle(MessageSent $event)
{
// Retrieve mailgun ID from the message headers
$id = $event->message->getHeaders()->get('X-Mailgun-Message-ID');
}
在我的 Laravel 应用程序中,我有一个事件侦听器,当某人被添加到课程时触发,然后向该用户发送电子邮件 "You've been added to course"。
我正在使用 Mailgun 发送这些电子邮件,在这个监听器中,我调用 \Mail
构建一个 blade 文件并将电子邮件发送给用户,一切正常。
我的问题是我想存储那个 Mailgun ID。 Laravel v6 中的哪个被添加到 Illuminate\Mail\Transport\MailgunTransport@send
中,我可以通过调用 $message->getId()
访问该 ID,我认为可以在 vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php
如何return $message->getId()
才能在我的监听器中使用它?
在我的监听器中 \Mail
我调用我的模型来创建新发送的电子邮件记录,我希望能够存储该 ID。
下面是 link 我最初的问题,https://whosebug.com/users/2343305/ilgala 能够提供帮助:
我也回答了你的老问题。我认为你误解了这个过程。我将在这里为 Laravel 6.x 创建一个完整的示例,但它应该与旧版本相同。
1.配置 mailgun
这是简单的部分。只需使用 mailgun 凭据更改 services.php
文件,并记住使用 composer 要求 guzzlehttp/guzzle
包,否则您将无法发送电子邮件。然后更改 .env
文件并将 MAIL_DRIVER
设置为 mailgun
。这样 Laravel 就会知道它必须使用那个驱动程序来发送电子邮件。
2。创建你的逻辑
假设每次客户创建和订购时您都必须发送一封电子邮件。您将在代码库中的某处使用 store
方法创建订单并在之后立即发送电子邮件。像
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));
}
由于您设置了 mailgun 驱动程序,Mail
facade 将自动使用 MailgunTransport
class.
3。创建监听器
如 EventServiceProvider
中设置侦听器。然后,一旦您创建了侦听器,您就可以按如下方式检索 Mailgun ID:
/**
* Handle the event.
*
* @param \Illuminate\Mail\Events\MessageSent $event
* @return void
*/
public function handle(MessageSent $event)
{
// Retrieve mailgun ID from the message headers
$id = $event->message->getHeaders()->get('X-Mailgun-Message-ID');
}