在Symfony 5中异步使用电子邮件

问题描述

我使用Symfony 5 messanger处理以异步方式发送的电子邮件。我有:

    .env 中配置的
  • 电子邮件DNS

    MAILER_DSN=smtp://localhost

  • .env 中的
  • messanger传输DNS(我使用数据库存储电子邮件队列)

    MESSENGER_TRANSPORT_DSN=doctrine://default

  • messenger.yaml

    中的运输和路由
      serializer:
          default_serializer: messenger.transport.symfony_serializer
    
      transports:
          # https://symfony.com/doc/current/messenger.html#transport-configuration
          async: '%env(MESSENGER_TRANSPORT_DSN)%'
          failed: 'doctrine://default?queue_name=failed'
    
          # sync: 'sync://'
    
      routing:
          # Route your messages to the transports
          # 'App\Message\YourMessage': async
          'Symfony\Component\Mailer\Messenger\SendEmailMessage':  async
    

当前情况::将电子邮件发送到队列的工作原理-使用邮件发送器导致在数据库表 messanger_messages 中插入记录。

问题::如果我正确理解文档,则为了进行异步电子邮件处理,首先将电子邮件排入数据库(对于我而言),然后使用命令php bin/console messenger:consume -vv async逐一发送。不幸地执行此命令不会导致发送电子邮件。数据库中的记录保持不变,它们不属于失败类别,并且不生成电子邮件。

为确保发送配置正确,我切换到同步方法,在这种情况下,将立即生成并发送电子邮件。所以我的问题是,还需要执行另一步骤来使排队的电子邮件被使用,例如。编写自定义发送处理程序(我假设messanger:consume命令将为我完成此操作),或者如果我错过了该过程的任何其他部分,导致没有使用排队的电子邮件。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)