У меня есть тип узла «счет-фактура», который содержит поле файла «field_invoice» (pdf). Я настраиваю действие следующих правил и ищу способ, чтобы правила забрали файл из «field_invoice» и отправили электронное письмо с файлом, прикрепленным к пользователю.
У меня D9.3.x и правильно работают Rules + Swiftmailer.
Это мои текущие правила
- Событие: после сохранения нового объекта контента типа «Счет-фактура».
- Условие: Объект относится к пакету (узел, узел, счет-фактура)
- Действие: Отправить электронное письмо
Пока я в порядке. Я могу получить доступ к «field_invoice» в действии «Отправить электронное письмо».
Следующим шагом, который я попробовал, является создание пользовательского модуля с этим в mymodule.module:
$file->uri = '<что здесь разместить?>'; // Путь файла
$file->filename = '<и что сюда вставить?>'; //Имя файла
$file->filemime = 'application/pdf'; //Тип MIME файла
$params['attachments'][] = $file;
$mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);
функция mymodule_mail($key, &$message, $params) {
переключатель ($ ключ) {
case 'my_email_key':
$message['body'][] = $params['body'];
$message['subject'] = $params['subject'];
$message['params']['attachments'] = $params['attachments'];
сломать;
}
}
Но я понятия не имею, как позволить моему модулю подобрать мое правило и передать загруженный файл при его запуске. Есть много похожих вопросов, на которые есть хорошие ответы, но все они относятся к эпохе D7 с устаревшей информацией. Я нахожу мало документации или примеров использования того, как добиться этого с помощью D8-D9.
Документация, которую я нашел, но мне было недостаточно:
Как добавить вложение PDF в электронное письмо?
https://www.drupal.org/project/swiftmailer/issues/2713651