Php 如何将MailgunTransport中创建的Mailgun ID传递给Laravel中的事件侦听器?
在我的Laravel应用程序中,我有一个事件监听器,当某人被添加到课程中时触发,然后向该用户发送电子邮件“您已被添加到课程中” 我正在使用Mailgun发送这些电子邮件,在这个侦听器中,我调用Php 如何将MailgunTransport中创建的Mailgun ID传递给Laravel中的事件侦听器?,php,laravel,mailgun,Php,Laravel,Mailgun,在我的Laravel应用程序中,我有一个事件监听器,当某人被添加到课程中时触发,然后向该用户发送电子邮件“您已被添加到课程中” 我正在使用Mailgun发送这些电子邮件,在这个侦听器中,我调用\Mail,它构建了一个刀片文件并将电子邮件发送给用户,这一切都很正常 我的问题是我想存储邮枪ID。在Laravel v6中,它被添加到illumb\Mail\Transport中\MailgunTransport@send我可以通过调用$message->getId()访问该ID,我认为可以在供应商/sw
\Mail
,它构建了一个刀片文件并将电子邮件发送给用户,这一切都很正常
我的问题是我想存储邮枪ID。在Laravel v6中,它被添加到illumb\Mail\Transport中\MailgunTransport@send
我可以通过调用$message->getId()
访问该ID,我认为可以在供应商/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php中找到该ID
如何返回$message->getId()
,以便在侦听器中使用它
在我的侦听器\Mail
中,我调用我的模型来创建新发送的电子邮件记录,我希望能够存储该ID
以下是我最初提出的问题的链接,我的问题有助于解决问题:
我也回答了你的老问题。我认为你误解了这个过程。下面我将为Laravel6.x创建一个完整的示例,但对于较旧的版本应该是相同的 1。配置邮枪 这是最简单的部分。只需使用mailgun凭据更改
services.php
文件,并记住向composer请求guzzlehttp/guzzle
包,否则您将无法发送电子邮件。然后更改.env
文件,并将MAIL\u驱动程序设置为mailgun
。通过这种方式,Laravel将知道它必须使用该驱动程序来发送电子邮件
2。创建您的逻辑
假设每次客户创建和订购时,您都必须发送一封电子邮件。您将在代码库中的某个地方有一个OrderController
,其中包含一个store
方法,该方法创建订单并立即发送电子邮件。差不多
公共函数存储(请求$Request)
{
//验证您的请求
$this->validate([…]);
//创建订单
$order=新订单();
$order->fill($request->only([…]);
//保存订单
$order->save();
//发送确认邮件;
邮件::发送(auth()->user())->发送(创建新订单($order));
}
由于您设置了mailgun驱动程序,Mail
facade将自动使用MailgunTransport
类
3。创建侦听器
如中所述,在EventServiceProvider
中设置侦听器。然后,创建侦听器后,您可以按如下方式检索Mailgun ID:
/**
*处理事件。
*
*@param\light\Mail\Events\MessageSent$event
*@返回无效
*/
公共函数句柄(MessageSent$事件)
{
//从消息头中检索mailgun ID
$id=$event->message->getHeaders()->get('X-Mailgun-message-id');
}
再次感谢@ilGala这个例子对我来说更清楚了,我想我明白了让人困惑的原因。我要试一试!