我目前在我的项目中使用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发送
1条答案
按热度按时间ecr0jaav1#
您可以通过try/catch块跟踪邮件在传递到SMTP服务器时是否失败,如https://symfony.com/doc/current/mailer.html#handling-sending-failures所示
但是,如果您正在寻找进一步的反馈,例如消息最终是否无法传递,(退回、邮箱满等),然后你会想要查看邮件服务器的管理端,或者更多地查看第三方传输,它们会发出一个回调webhook,稍后会通知你邮件的状态。这些服务也会提供很好的反馈,比如你的邮件是否被收件人标记为垃圾邮件,等