Содержание
  1. Что такое n8n?
  2. Какие задачи можно решить?
  3. Отправка электронного письма в формате таблицы
  4. Как создать таблицу для письма?
  5. Использование n8n для отправки письма
  6. Настройка отправки письма в формате таблицы
  7. Пример отправки электронного письма в формате таблицы
  8. Заключение
  9. Одна CSV-таблица — одно HTML-письмо
  10. Частые вопросы
ГайдыОбновлено · 10.2026

n8n: отправка электронного письма в формате таблицы

24 октября 2023 · 8 минут чтения

Электронная почта стала частью коммуникации, как в личной, так и в деловой сфере. Важно не только отправлять электронные сообщения, но и делать это профессионально и эффективно. Одним из способов сделать ваши письма более информативными и привлекательными является отправка их в формате таблицы. В этой статье мы узнаем, как это можно сделать с интеграционной платформой n8n.

Что такое n8n?

n8n — это мощная интеграционная платформа, предназначенная для автоматизации бизнес-процессов. Она дает объединять приложения и сервисы, создавая целостные рабочие процессы без нужды писать сложный код.

Какие задачи можно решить?

n8n позволяет решать множество задач, включая:

  • Автоматизацию рутинных задач.
  • Интеграцию различных онлайн-сервисов и приложений.
  • Создание и отправку электронных писем.

Отправка электронного письма в формате таблицы

Электронные письма, содержащие информацию в виде таблицы, обладают несколькими преимуществами:

  • Четкая и структурированная информация.
  • Удобство для получателя при восприятии данных.
  • Возможность визуального анализа информации.
  • Простота в создании и редактировании.

Как создать таблицу для письма?

Для создания таблицы в электронном письме можно использовать HTML-разметкой. В HTML таблицы создаются с использованием тегов <table>, <tr> (строка), <td> (ячейка) и других. Каждая строка таблицы представляет собой новый блок данных, а каждая ячейка – отдельный элемент в этом блоке.

Использование n8n для отправки письма

Прежде чем использовать n8n, надо установить его. n8n поддерживает установку на разные операционные системы, включая Windows, macOS и Linux.

Настройка отправки письма в формате таблицы

Чтобы настроить отправку электронного письма в формате таблицы с использованием n8n, вам потребуется выполнить следующие шаги:

  • Создайте рабочий процесс n8n: зайдите в интерфейс n8n и создайте новый рабочий процесс (workflow).
  • Добавьте узел «Send Email»: добавьте узел «Send Email», который даст вам отправить электронное письмо.
  • Настройка параметров письма: в параметрах узла «Send Email» укажите адрес получателя, тему письма и текст письма. Для создания таблицы в письме, используйте HTML-разметку.
  • Отправка письма: выберите Email Format → HTML и настройте SMTP credentials. Перед запуском проверьте собранное тело письма и адрес получателя.

Пример отправки электронного письма в формате таблицы

Рассмотрим пример, как можно использовать n8n для отправки электронного письма в формате таблицы. Предположим, у вас есть список данных в форме таблицы в приложении Excel, и вы хотите отправить эту таблицу в виде электронного письма.

Создание таблицы в Excel…

Сначала создайте таблицу в Excel с необходимыми данными. Например:

Имя Возраст Email
Анна 28 anna@email.com
Иван 35 ivan@email.com
Мария 42 maria@email.com

Экспорт таблицы в CSV…

Экспортируйте таблицу в формат CSV. Для этого выберите «Сохранить как» и выберите CSV как формат файла.

Создание рабочего процесса в n8n…

  • Зайдите в интерфейс n8n и создайте новый рабочий процесс.
  • Если CSV находится на диске процесса n8n, прочитайте его узлом Read/Write Files from Disk. Затем преобразуйте бинарный файл через Extract from File → Extract From CSV. Путь должен быть доступен процессу n8n; в Docker это путь внутри контейнера.
  • Добавьте узел Code в режиме Run Once for All Items и вставьте код из редакционного примера ниже. Перед этим согласуйте имена полей: заголовки CSV Имя, Возраст, Email должны либо совпадать с ожидаемыми name, age, email, либо быть переименованы в коде. После этого узел Code вернёт один item с полем html.
  • Добавьте узел Send Email. Выберите SMTP credentials, задайте отправителя, получателя и тему. Выберите Email Format → HTML и подставьте тело {{$json.html}}.
  • Перед реальной отправкой проверьте собранное тело письма и адрес получателя. Отправьте письмо сначала на свой адрес. В рамках подготовки примера письмо не отправлялось, SMTP не запускался.

Заключение

Использование интеграционной платформы n8n для отправки электронных писем в формате таблицы делает коммуникацию более эффективной и информативной. Путем создания таблиц в HTML-формате и настройки рабочих процессов в n8n, вы можете автоматизировать процесс отправки данных в этом удобном и понятном формате.

Использования n8n включают в себя простоту настройки, гибкость в интеграции с различными сервисами и возможность создания сложных автоматизированных процессов без необходимости программирования.

С n8n вы можете сделать вашу электронную коммуникацию более информативной и эффективной, предоставляя получателям четкую и структурированную информацию в удобном формате таблицы.

Одна CSV-таблица — одно HTML-письмо

После узла Extract From CSV на выходе обычно оказывается несколько отдельных JSON items — по одному на каждую строку файла. Узел Send Email ожидает одно тело письма, поэтому перед отправкой items нужно собрать в единственный объект с полем html. Ниже — рабочий шаг, который закрывает этот разрыв. (По данным docs.n8n.io).

Сборка строк в Code (Run Once for All Items)

Добавьте узел Code и переключите режим на Run Once for All Items: по документации в этом режиме код в узле Code выполняется один раз независимо от числа входных items (По данным docs.n8n.io), а $input.all() возвращает массив входных items текущего узла (По данным docs.n8n.io). Это ровно тот случай, когда нужно превратить N строк в один результат.

Вставьте в поле Code функцию из артефакта ниже. До этого приведите поля, которые реально приходят из CSV, к английским ключам: в исходной таблице заголовки Имя, Возраст, Email, а код ожидает name, age, email. Проще всего задать эти англоязычные заголовки в CSV, чтобы Extract From CSV создал нужные ключи сразу. Либо добавьте в начало функции преобразование ключей: возьмите item.json['Имя'], item.json['Возраст'], item.json['Email'] и сохраните их как name, age, email. Тогда функция прочитает эти поля, экранирует текстовые ячейки и вернёт [{ json: { html } }] — один item с готовой разметкой таблицы.

Настройка Send Email

В узле Send Email укажите SMTP credentials, выберите Email Format → HTML (в этом режиме тело отправляется как HTML) и подставьте тело {{$json.html}}. Узел Send Email отправляет письма через SMTP-сервер, поэтому без рабочих credentials отправка не пройдёт. (По данным docs.n8n.io).

Проверка перед отправкой

Перед реальной отправкой прогоните только Code-узел и убедитесь вручную: на выходе ровно один item (output_items = 1), а в поле html присутствуют три строки <tr> внутри <tbody>. Отправьте письмо сначала на свой адрес. Эта проверка локальная: письмо в рамках подготовки примера не отправлялось, SMTP не запускался.

Короткая альтернатива

Вместо Code можно использовать узел HTML с операцией Convert to HTML Table — она преобразует входные данные в таблицу без ручной сборки строк.

Обычная HTML-таблица внутри тела письма и отдельный файл .xls/.xlsx — разные вещи. Если нужно отправить файл как вложение, не отправляйте его как разметку в теле. Используйте Send Email → Options → Attachments и укажите имя binary property (например, data). Имя файла указывать не нужно. Подпись письма в этом случае может выглядеть так: «Во вложении — таблица report.xlsx» (расширение .xlsx).

Обратный случай — извлечение текста из HTML — решается узлом HTML с операцией Extract HTML Content: выберите Source Data = JSON, укажите JSON Property с HTML, задайте Key для сохранения результата, CSS Selector и Return Value = Text. Если требуется отправить обычный текст, в узле Send Email выберите Email Format = Text; выбор этого режима сам по себе не удаляет теги из строки.

Редакционный пример

Шаблон ниже составлен редакцией, данные условны и приведены только для демонстрации логики. Методическая основа — официальная документация n8n по узлам Code, Send Email и HTML.

Условный вход (три item после Extract From CSV):

JSON5 строк
[
  { "name": "Анна",  "age": 28, "email": "anna@example.com" },
  { "name": "Иван",  "age": 35, "email": "ivan@example.com" },
  { "name": "Мария", "age": 42, "email": "maria@example.com" }
]

Содержимое Code (Run Once for All Items):

JS12 строк
const esc = (v) => String(v)
  .replace(/&/g, '&amp;')
  .replace(/</g, '&lt;')
  .replace(/>/g, '&gt;');

const rows = $input.all().map((item) => {
  const d = item.json;
  return `<tr><td>${esc(d.name)}</td><td>${esc(d.age)}</td><td>${esc(d.email)}</td></tr>`;
});

const html = `<table><tbody>${rows.join('')}</tbody></table>`;
return [{ json: { html } }];

Ожидаемый результат (условно): один item, поле html содержит <tbody> с тремя <tr>. Это ожидание. Подтверждённого прогона нет.

Проверка: сравните число <tr> в html с числом входных items; при несовпадении проверьте, что режим узла — Run Once for All Items. Режим Run Once for Each Item здесь не подходит.

Официальные источники: Send Email, Code, HTML.

Частые вопросы

Почему после Extract From CSV получается несколько items? Узел Extract From CSV создаёт отдельный item на каждую строку файла, поэтому три строки дают три items. Send Email ожидает одно тело письма, и перед отправкой их нужно собрать в один объект с полем html.

Зачем нужен режим Run Once for All Items в узле Code? В этом режиме код выполняется один раз независимо от числа входных items, а функция получает доступ ко всем items сразу через $input.all(). Это позволяет собрать строки из всех items в одну HTML-таблицу.

Как убедиться, что таблица собрана правильно до отправки? Прогоните только узел Code и проверьте, что на выходе один item, а в поле html три строки tr внутри tbody. Отправьте письмо сначала на свой адрес.


Читайте также

3 материала