如何从Laravel的Mail MessageSending事件中获取收件人的电子邮件地址?

3

你可能知道,当Laravel准备发送电子邮件消息时,它会触发MessageSending事件。我添加了一个监听器来监听这个特定的事件。

不幸的是,在监听器的处理方法中,我无法确定收件人的电子邮件地址。我只能获得Swift Mailer消息作为参数。

你知道我如何在监听器的处理方法中检索收件人的电子邮件地址吗?

2个回答

5

您可以在 Swift_Message 对象上调用 getTo() 方法,以获取将收到此邮件的地址列表:

$message = $event->message;
$addresses = $message->getTo();

仅为完整起见,我想指出这并不包括抄送和密送。在接收到一系列异常后才发现,对于某些大量邮件发送者,getTo() 返回的是 null。 - undefined

3
->getTo() 方法在 Laravel 9 中已经有所不同。
要简单获取发送的电子邮件地址列表:
    public function handle($event)
    {
        $emails = collect($event->message->getTo())
            ->map(fn ($item) => $item->getAddress());
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接