【问题标题】:How to get SMTP response code using Laravel 5 & Amazon SES?如何使用 Laravel 5 和 Amazon SES 获取 SMTP 响应代码?
【发布时间】:2018-12-18 21:51:16
【问题描述】:

我一直在尝试使用 Laravel5.6 和 Amazon SES 在我的项目中获取“SMTP 响应代码(例如 250、530 等)”,但最终我找不到方法。

其实,我可以得到 SES 发布的“Message ID”……但是我怎样才能得到 RAW 响应码呢?

这是我尝试从发送的邮件中获取消息 ID 的内容。

1) 为“MessageSent”事件注册“LogSentMessage”监听器,发送邮件时触发。

protected $listen = [
    'Illuminate\Mail\Events\MessageSent' => [
        'App\Listeners\LogSentMessage',
    ],
];

2) 在“App\Listeners\LogSentMessage”监听文件中获取 Swift_message 对象

public function handle(MessageSent $event)
{
    dd($event->message); //I could get an object containing email data
    // $event->message->getId(); gives me the Message ID.
}

如果有人知道如何并让我分享,我将不胜感激。

谢谢。

【问题讨论】:

  • 签出这个 Swift_Events_SendEvent Api 他们有一个名为 setResultgetResult 的方法,laravel 在他们的 SES Mailer 服务中也使用相同的事件类。尝试dd($event); 并查看课程详情。 apigen.juzna.cz/doc/swiftmailer/swiftmailer/…
  • @Purvesh 非常感谢您提供的好信息!按照您的建议,我可以以某种方式获得 Swift_Events_SendEvent->getResult() 值。但是,我真的很想知道是否有办法获得准确的 SMTP 响应代码,例如 250、454、530、535……有什么建议吗?
  • 我的假设是获取响应代码并设置响应代码值应该是:250 或 530
  • @Purvesh 我希望如此,但实际上 Swift_Events_SendEvent -> getResult() 返回以下之一: 0x0001, 0x0011, 0x0010, 0x0100, 0x1000 - 表示挂起、假脱机、成功、暂时成功、失败,分别。

标签: laravel smtp amazon-ses


【解决方案1】:

你是在正确的轨道上。

我发现获取 MessageId 的最佳/唯一方法是浏览已发送消息的标头。

App\Listeners\LogSentMessagehandle() 函数中,您将能够像这样获取 MessageId:

public function handle(MessageSent $event)
{
    $message_id = $event->message
        ->getHeaders()
        ->get('x-ses-message-id')
        ->getValue();
}

【讨论】:

  • 非常感谢莱纳斯!抱歉回复晚了。恐怕即使使用这种方法,它仍然无法获得 原始 SMTP 响应代码...
  • 我没有代码来仔细检查这个,但是如果你dd()$event->message->getHeaders() 调用呢?
  • 记得保留 MAIL_MAILER=ses 而不是 smtp。如果使用 smtp Laravel 将提供自己的消息 id
猜你喜欢
  • 2016-10-09
  • 2012-02-23
  • 2020-11-04
  • 2013-05-15
  • 2017-01-19
  • 2016-12-10
  • 1970-01-01
  • 2014-07-12
  • 2012-06-26
相关资源
最近更新 更多