Как собрать список URL-адресов файлов с помощью правил и отправить одно электронное письмо, содержащее этот список?
Я использую модуль Правила для отправки электронной почты, когда узел содержимого сохраняется/обновляется.
У меня есть базовый узел, где пользователи могут загружать большое количество файлов и вводить адрес электронной почты, чтобы уведомить кого-либо об изменении.
В этом примере действие правил для Отправки электронной почты находится в цикле правил, и я получаю одно электронное письмо на элемент в списке. Когда я перемещаю Отправить электронное письмо влево, я не могу получить доступ к "list_item
" переменная.
Правила Событий:
- После сохранения нового содержимого
- После обновления существующего контента
Правила И Условия:
Содержимое имеет тип, Параметр: Содержимое: [узел], Типы содержимого: Базовая страница
Значение НЕ данных пустое, Параметр: Данные для проверки: [узел: поле-электронная почта]
Правила Действия:
Петля
Параметр: Список: [узел: файл поля]
-
Элемент списка: Текущий элемент списка (list_item)
- Отправить Электронное Письмо
- Параметр: Кому: [узел: поле -электронная почта], Тема: Тест [узел: заголовок], Сообщение: [элемент списка: файл: url], От: [email protected]
2 answers
Проблемы с тем, что вы пробовали до сих пор
Действие правил для Отправки электронной почты находится в цикле правил, и я получаю по одному электронному письму на элемент в списке
Ваше правило работает так, как реализовано: для каждой итерации вашего цикла у вас есть действие Отправить электронное письмо ... Конечно, это не совсем то, чего вы хотите...
Когда я перемещаю Отправку электронной почты влево, я не могу получить доступ к переменной "
list_item
".
С этим "перемещением Электронная почта слева", вы должны иметь в виду что-то вроде " Используя пользовательский интерфейс Правил, я изменяю Действие Правил на Отправить электронное письмо, чтобы оно больше не рассматривалось как одно из действий Правил, выполняемых для каждой итерации цикла. И вместо этого Отправьте электронное письмо Действие правил должно выполняться только 1 раз после завершения цикла правил".
Так что да, это способ выполнить только такое Отправить электронное письмо Действие правил 1 время (вместо для каждой итерации цикла). Однако, поступая таким образом, ваши правила действия по Отправке электронного письма больше не имеют доступа к этой важной переменной list_item
, которая похожа на локальную переменную внутри вашего цикла.
Решение, чтобы заставить его работать в любом случае
Однако, если то, что вы ищете (= список файлов, сохраненных в поле "Файл"), недоступно, то просто (а) сначала сделайте это доступным и (б) подождите с вашим действием Отправить электронное письмо , пока оно не будет доступно. Читайте дальше для получения более подробной информации...
Трюк для этого аналогичен тому, что показано в примере правил, включенном в мой ответ на " Как объединить все значения токенов списка в одном поле в цикле правил?". В вашем случае вы могли бы заставить его работать так:
-
Добавьте некоторую новую переменную правил, которая будет использоваться позже как часть текста письма, перед началом вашего цикла. Скажем, вы называете переменную
file_list_var_for_email_body
. - В пределах вашего цикл, для каждой итерации добавляйте или добавляйте значение для каждого
list_item
к этой переменнойfile_list_var_for_email_body
(см., куда мы идем???). - Переместите это действие Отправить электронное письмо за пределы вашего цикла и после завершения цикла. И точно настройте детали (конфигурацию) действия ваших правил, чтобы Отправить электронное письмо . При этом вы сможете выбрать маркер для
file_list_var_for_email_body
, чтобы включить его в любое место в тексте вашего электронного письма.
Легко, нет?
Объединение текста в Правилах было трудным, когда я это делал. Что я сделал, так это сохранил две переменные: текстовый массив со значением начального элемента (например, "Это дайджест:...") и текстовое значение.
Для каждой итерации цикла по элементам для объединения в дайджест и т.д. Я установил текстовое значение в качестве первого элемента в массиве ([массив:0]), а затем установил значение [массив:0] как объединение текстового значения и нового значения из цикла. Когда цикл завершается, вы знаете, что [массив:0] содержит содержимое дайджеста.
Я не знаю, почему это не могло работать более простым способом, объединяя текстовое значение в каждом цикле напрямую или используя два текстовых значения вместо массива. Когда я попробовал любой из других способов, он сохранил только последний или первый элемент того, что было объединено.