未调用 Mautic 挂钩 (ON_SENT_EMAIL_TO_USER)

Mautic hook is not called (ON_SENT_EMAIL_TO_USER)

我正在编写一个插件,它应该向发送给最终用户的电子邮件添加一个(动态)附件。但我坚持一件事。

首先,我使用 EMAIL_ON_SEND 挂钩将附件添加到电子邮件中。但是好像每次调用都会给每封邮件添加附件。

每封电子邮件都会被调用两次。因此,对于第一封邮件,它将添加 2 个附件,第二封邮件将添加 4 个附件,依此类推。

第二种方法是使用 ON_SENT_EMAIL_TO_USER 挂钩。但是在发送电子邮件(在一个片段中)之前似乎没有调用这个。

class EmailSubscriber extends CommonSubscriber
{
    protected $helper;

    public function __construct(IntegrationHelper $helper)
    {
        $this->helper = $helper;
        $this->parser = new ApiParser();
    }

    /**
     * @return array
     */
    public static function getSubscribedEvents()
    {
        return [
          //  EmailEvents::EMAIL_ON_SEND => ['onEmailSend', 100],
            EmailEvents::ON_SENT_EMAIL_TO_USER => ['onEmailSend', 100],
        ];
    }

    /**
     * Search and replace tokens with content
     *
     * @param EmailSendEvent $event
     */

    public function onEmailSend(EmailSendEvent $event)
    {
        error_log('123');
    }

不知何故,我必须挂钩发送电子邮件而不是事件的实际操作(?)。但是我不知道是哪一个

我无法直接回答,但也许可以为您指出一些有用的资源!

首先,您是要将电子邮件发送给 Mautic 用户(例如管理员或潜在客户所有者),还是发送给潜在客户?只是想仔细检查我们正在寻找正确的东西,因为他们经常感到困惑!

这也取决于您要执行的操作,附加一个当前不属于 Mautic 的文件(例如发票或类似的东西),或者您是否尝试附加一个您想要的文件在 Mautic 中作为资产进行跟踪。

就附件而言,开发人员文档中的这些资源可能会有用:

它引用了 attachFile(),但也有 attachAsset(),它允许您附加已上传的 Mautic 资产 (\Mautic\AssetBundle\Entity\Asset)。

您可能还想看看 https://forums.mautic.org,那里可能有更多来自社区的开发人员能够提供更深入的见解!

您好,首先感谢您的回复。

挂钩被调用了多次,所以我需要对其进行调整。 所以我们跟踪它被调用的位置并过滤它。 另外每次都要清理附件

无论如何,即使它不是那么干净,它也能达到目的

$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);

            if (strpos($trace[4]['file'], 'SendEmailToContact.php') !== false) {
                $helper = $event->getHelper();

                $messageChildren = $helper->message->getChildren();

                if (count($messageChildren) > 0) {
                    $helper->message->detach($messageChildren[0]);
                }