如何在 Laravel 中检索 Mailgun 发送的邮件
How retrieve Mailgun Delivered Message in Laravel
在我的 Node.js 应用程序中,我按照 Mailgun 文档 https://documentation.mailgun.com/en/latest/quickstart-sending.html#send-with-smtp-or-api 发送了类似于以下内容的电子邮件:
mailgun.messages().send(data, (error, body) => {
console.log(body);
// body is {id: some_mailgun_built_id, message: 'Queued. Thank You'}
// which I store the body.id in my database
});
我面临的问题是,当我使用 Laravel 发送电子邮件时,如何访问相同的 Mailgun 响应? Mailgun 文档没有提供任何示例来说明如何检索该数据。
这就是我发送电子邮件的方式 Laravel:
\Mail::to($recipients)->send(
// this just renders my blade file which formats my email
new SendEmail($email);
);
// ?? How to get Message was sent object here
如果有人知道任何解决方案,将不胜感激!
您好,欢迎来到 SO!
Laravel 有两个电子邮件事件,如 official documentation: MessageSending
and MessageSent
中所述
您可以关注 events official documentation 以监听这些特定事件:
/**
* 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
作为输入,其中包含一个 header,即您要查找的 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 e-mail。不幸的是,您无法访问整个 Mailgun 响应,但使用 API 您可以轻松检索您的消息。
在我的 Node.js 应用程序中,我按照 Mailgun 文档 https://documentation.mailgun.com/en/latest/quickstart-sending.html#send-with-smtp-or-api 发送了类似于以下内容的电子邮件:
mailgun.messages().send(data, (error, body) => {
console.log(body);
// body is {id: some_mailgun_built_id, message: 'Queued. Thank You'}
// which I store the body.id in my database
});
我面临的问题是,当我使用 Laravel 发送电子邮件时,如何访问相同的 Mailgun 响应? Mailgun 文档没有提供任何示例来说明如何检索该数据。
这就是我发送电子邮件的方式 Laravel:
\Mail::to($recipients)->send(
// this just renders my blade file which formats my email
new SendEmail($email);
);
// ?? How to get Message was sent object here
如果有人知道任何解决方案,将不胜感激!
您好,欢迎来到 SO!
Laravel 有两个电子邮件事件,如 official documentation: MessageSending
and MessageSent
您可以关注 events official documentation 以监听这些特定事件:
/**
* 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
作为输入,其中包含一个 header,即您要查找的 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 e-mail。不幸的是,您无法访问整个 Mailgun 响应,但使用 API 您可以轻松检索您的消息。