Маутический хук не вызывается (ON_SENT_EMAIL_TO_USER) - PullRequest
0 голосов
/ 15 октября 2019

Я пишу плагин, который должен добавить (динамическое) вложение к электронному письму, которое отправляется конечному пользователю. Но я застрял на одном:

Сначала я использовал хук 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');
    }

Почему-то мне нужно подключить реальное действие, которое отправляет электронное письмо, а не событие (?),Но я не могу понять, какой

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Эй, во-первых, спасибо за ответ.

Хук вызывается несколько раз, поэтому мне нужно было его настроить. Поэтому мы отслеживаем, где он вызывается, и фильтруем его. Кроме того, нам нужно каждый раз чистить насадки.

В любом случае, даже если он не такой чистый, он делает свое дело

$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]);
                }
0 голосов
/ 16 октября 2019

Я не могу ответить напрямую, но могу указать вам на некоторые полезные ресурсы!

Во-первых, вы пытаетесь отправить электронное письмо пользователю Mautic (например, администратору или владельцу ведущего)? ) или в лидеры? Просто хотел перепроверить, мы смотрим на правильные вещи, поскольку они часто путаются!

Это также зависит от того, что вы пытаетесь сделать, прикрепить файл, который в настоящее время не является частью Mautic (например, счет или что-то в этом роде) или если вы пытаетесь прикрепить файл, который выхочу отслеживать в Mautic как актив.

С точки зрения вложений эти ресурсы из документации разработчика могут быть полезны:

Он ссылается на attachFile (), но есть также метод attachAsset (), который позволяет присоединить уже загруженный ресурс Mautic (\ Mautic \ AssetBundle \ Entity \ Asset).

Вы также можете захотетьВзгляните на https://forums.mautic.org, где может быть больше разработчиков из сообщества, способных дать некоторую дополнительную информацию!

...