使用Symfony Mailer时如何获取电子邮件ID?

ubof19bj  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(152)

在Laravel 9项目中,我使用动态SMTP设置:

$transport = Transport::fromDsn("smtp://$department->email:$department->smtp_password@$department->smtp_host:$department->smtp_port");
$mailer = new Mailer($transport);

$email = (new Email())
            ->subject($request->email_subject)
            ->from($department->email)
            ->to($request->email_reply_to)
            ->html($request->body);

$headers = $email->getHeaders();

$mailer->send($email);

然而,我无法获得邮件的ID。在Laravel使用Swift_Mailer之前,我可以这样做:

$email->getId()

但现在我得到:

Call to undefined method Symfony\Component\Mime\Email::getId()

那么,如何检索消息的ID呢?
编辑:为了获得MessageId,我必须首先获得SentMessage对象,然后在该对象中访问getMessageId方法。
现在的问题是,如何获得SentMessage对象?
$mailer->send($email)返回null

kkih6yb8

kkih6yb81#

https://github.com/symfony/symfony/pull/38517提供了一个提示:不要使用Mailer,而是使用Transport本身。当手动创建Mailer类时,它本身并不比在传输上调用send做更多的事情。

$transport = Transport::fromDsn("smtp://$department->email:$department->smtp_password@$department->smtp_host:$department->smtp_port");

$email = (new Email())
            ->subject($request->email_subject)
            ->from($department->email)
            ->to($request->email_reply_to)
            ->html($request->body);

$headers = $email->getHeaders();

$sentMessage = $transport->send($email);

相关问题