Symfony -获取使用Messenger发送的邮件的状态

r8xiu3jd  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(158)

我目前在我的项目中使用Symfony Messenger。我用它通过MessageBox发送邮件
文件如下:

<?php

namespace App\MessageHandler;

use App\Entity\Dossier;
use App\Message\SendEmailMessage;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;

class SendEmailMessageHandler implements MessageHandlerInterface
{
    /** @var EntityManagerInterface */
    private $em;
    /** @var MailerInterface */
    private $mailer;

    public function __construct(EntityManagerInterface $entityManager, MailerInterface $mailer)
    {
        $this->entityManager = $entityManager;
        $this->mailer = $mailer;
    }

    public function __invoke(SendEmailMessage $message)
    {
        $email = (new Email())
        ->from('[email protected]')
        ->to('[email protected]')
        ->subject('test')
        ->html('test');

        $this->mailer->send($email);
    }

}

这是一种通过Messenger跟踪邮件以从smtp服务器或类似的东西获得响应的方法吗?我想向用户显示邮件是否使用Messenger发送

ecr0jaav

ecr0jaav1#

您可以通过try/catch块跟踪邮件在传递到SMTP服务器时是否失败,如https://symfony.com/doc/current/mailer.html#handling-sending-failures所示

$email = new Email();
// ...
try {
    $mailer->send($email);
} catch (TransportExceptionInterface $e) {
    // some error prevented the email sending; display an
    // error message or try to resend the message
}

但是,如果您正在寻找进一步的反馈,例如消息最终是否无法传递,(退回、邮箱满等),然后你会想要查看邮件服务器的管理端,或者更多地查看第三方传输,它们会发出一个回调webhook,稍后会通知你邮件的状态。这些服务也会提供很好的反馈,比如你的邮件是否被收件人标记为垃圾邮件,等

相关问题