您好,欢迎来到 SO!
Laravel 有两个电子邮件事件,如官方文档 https://laravel.com/docs/6.x/mail#events: MessageSending https://github.com/laravel/framework/blob/6.x/src/Illuminate/Mail/Events/MessageSending.php and MessageSent https://github.com/laravel/framework/blob/6.x/src/Illuminate/Mail/Events/MessageSent.php
您可以按照活动官方文档 https://laravel.com/docs/6.x/events为了监听这些特定事件:
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Illuminate\Mail\Events\MessageSending' => [
'My\Email\Listener',
],
'Illuminate\Mail\Events\MessageSent' => [
'My\Other\Listener',
],
];
您将收到作为输入的Swift_message
其中包含一个标头,该标头是您要查找的 Mailgun ID。让我们来看看MailgunTransport@send
源代码以了解幕后发生的事情:
/**
* {@inheritdoc}
*/
public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null)
{
// [...]
$response = $this->client->request(
'POST',
"https://{$this->endpoint}/v3/{$this->domain}/messages.mime",
$this->payload($message, $to)
);
$message->getHeaders()->addTextHeader(
'X-Mailgun-Message-ID', $this->getMessageId($response) // <-- HERE LARAVEL SETS THE MESSAGE ID
);
// [...]
}
在侦听器中查找相同的密钥,您可以恢复 mailgun 分配给您的电子邮件的消息 ID。遗憾的是,您无法访问整个 Mailgun 响应,但使用 API,您可以轻松检索消息。