symfony邮件程序检索SentMessage对象

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

我使用symfonymailer的方式描述在发送电子邮件与Mailer/调试电子邮件

  • TransportInterface的send()方法返回的SentMessage对象提供对原始消息(getOriginalMessage())和某些调试信息(getDebug())的访问,例如HTTP传输完成的HTTP调用,这对于调试错误非常有用。*

我目前使用它的方式:

public function __construct(private MailerInterface $mailer)

    try
    {
        $this->mailer->send($message);
    }
    catch (TransportExceptionInterface $e)
    {
        echo $e->getDebug();
    }

因为$this->mailer->send($message)MailerInterface,所以它不返回任何内容。通过拥有SentMessage对象,所有关于已发送邮件的信息都将显示。在发送邮件时如何检索SentMessage对象?

xriantvc

xriantvc1#

下面是我找到的解决方案:

public function __construct(private TransportInterface $mailer, private Environment $twig)

public function sendMail(Email $message): void
{
    //If template is used, render it
    if (!empty($message->getHtmlTemplate())){
        $renderedHtmlBody = $this->twig->render($message->getHtmlTemplate(), $message->getContext());
        $message->html($renderedHtmlBody);

        $textContent = new Html2Text($renderedHtmlBody, ['do_links' => 'table');
        $message->text(trim($textContent->getText()));
    }
    try {
        $message = $this->mailer->send($message);
    } catch (TransportExceptionInterface $e) {
        ...
    }
}

如果你使用TemplatedEmail,那么模板在发送时会被渲染,所以tweg-template必须在发送前被渲染,并且在发送前将html和纯文本填充到$message主体中。
纯文本邮件Html2Text用于获得清晰的文本输出

相关问题