Php 未调用Mautic钩子(发送给用户的电子邮件)

Php 未调用Mautic钩子(发送给用户的电子邮件),php,mautic,Php,Mautic,我正在写一个插件,应该在发送给最终用户的电子邮件中添加一个(动态)附件。但有一件事我被卡住了 首先,我使用发送上的EMAIL\uhook向电子邮件添加附件。但它似乎会在每次被调用时为每封电子邮件添加一个附件 对于每封电子邮件,它会被调用两次。因此,第一封邮件将添加2个附件,第二封邮件将添加4个附件,以此类推 第二种方法是使用ON\u SENT\u EMAIL\u to\u USER钩子。但是,在发送电子邮件之前(在一段中),似乎不会调用这个 在某种程度上,我必须抓住发送电子邮件而不是事件(?)的

我正在写一个插件,应该在发送给最终用户的电子邮件中添加一个(动态)附件。但有一件事我被卡住了

首先,我使用发送上的
EMAIL\u
hook向电子邮件添加附件。但它似乎会在每次被调用时为每封电子邮件添加一个附件

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

第二种方法是使用
ON\u SENT\u EMAIL\u to\u USER
钩子。但是,在发送电子邮件之前(在一段中),似乎不会调用这个


在某种程度上,我必须抓住发送电子邮件而不是事件(?)的实际行动。但是我不知道哪一个我不能直接回答,但是我可以为您指出一些有用的资源

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

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

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

  • 邮件助手-
  • 附件-
它引用了attachFile(),但也有attachAsset(),允许您附加已上载的Mautic资产(\Mautic\AssetBundle\Entity\asset)


您可能还想看看,社区中可能有更多的开发人员能够提供进一步的见解

首先感谢您的回复

钩子被多次调用,所以我需要调整它。 所以我们跟踪它被调用的位置并过滤它。 此外,我们每次都需要清洁附件

不管怎样,即使它不是那么干净,它也能起作用

$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]);
                }
$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]);
                }