Документация / n8n

Отправка почты в n8n через SMTP или REST API

В n8n отправлять через fmailer можно двумя способами. Узел Send Email работает по SMTP, и ему нужна только учётка. Узел HTTP Request вызывает REST API — это шаблоны, безопасные повторы и идентификатор письма для отслеживания. Оба способа используют один и тот же токен домена.

ℹ
Логин и пароль можно получить на странице токенов домена.

Параметры подключения

ПараметрЗначение
SMTP-хостsmtp.fmailer.ru
Порт587
ШифрованиеSTARTTLS (соединение переводится в TLS до авторизации)
ЛогинЛогин токена вашего домена
ПарольПароль этого токена — показывается один раз, при создании
ℹ
Каждый режим доступен и на высоком порту: 8465 (SSL/TLS), 8587 (STARTTLS) и 8025 (без шифрования). Многие хостинги и облака блокируют исходящие 25, 465 и 587 — если соединение обрывается по таймауту, используйте соответствующий высокий порт.

SMTP-учётка

Добавьте узел Send Email, откройте Credential to connect with и создайте новую учётку SMTP:

ПолеЗначение
UserЛогин токена вашего домена
PasswordПароль этого токена
Hostsmtp.fmailer.ru
Port587
SSL/TLSВыключен
Disable STARTTLSВыключен
Client Host NameОставьте пустым
⚠
Включайте его только для порта 465. На порту 587 оставьте выключенным: n8n сам переведёт соединение в TLS через STARTTLS, и именно это защищает пароль. Если вдобавок включить Disable STARTTLS, пароль токена уйдёт по сети открытым текстом.

Узел Send Email

ПараметрЗначение
OperationSend
From EmailМагазин <noreply@mail.example.ru> — на подтверждённом домене
To EmailВыражение вроде {{ $json.email }}; несколько адресов — через запятую
SubjectТекст или выражение
Email FormatBoth — HTML и текстовая версия
OptionsReply To для ответов и выключенный Append n8n Attribution

По адресу в From Email проверяются DKIM, SPF и DMARC. Если подставить туда адрес клиента — скажем, из заявки с сайта, — письмо отклонят; для него есть Reply To.

Проверка

Укажите в To Email свой адрес и выполните узел отдельно. При ошибке в выводе узла будет ответ SMTP-сервера — по нему видно, что не так: порт, шифрование или учётные данные.

Второй способ: узел HTTP Request

Настройте узел HTTP Request: MethodPOST, URLhttps://api.fmailer.ru/external/send_email_simple/, Authentication — None, Send Body включён, Body Content Type — JSON, Specify Body — Using JSON. Переключите поле JSON в режим выражения и вставьте:

JSONjson
{
  "to": [{{ JSON.stringify($json.email) }}],
  "subject": {{ JSON.stringify($json.subject) }},
  "body": {{ JSON.stringify($json.html) }},
  "sender": "Магазин <noreply@mail.example.ru>",
  "idempotency_key": {{ JSON.stringify("order-" + $json.orderId) }},
  "auth": {
    "username": "<логин токена>",
    "password": "<пароль токена>"
  }
}

JSON.stringify заключает каждое значение в кавычки и экранирует его, поэтому HTML с кавычками и переносами строк не сломает тело запроса. Токен передаётся в теле, потому что так авторизуется API отправки: хранилище учёток n8n здесь не поможет, и прочитать пароль сможет любой, кто может редактировать или экспортировать сценарий. idempotency_key защищает от повторной отправки: запрос с тем же ключом вернёт первый результат. Остальные поля — в описании API.

У узла есть Import cURL: если вставить эту команду, метод, адрес, заголовок и тело заполнятся сами.

bash
curl -X POST https://api.fmailer.ru/external/send_email_simple/ \
  -H "Content-Type: application/json" \
  -d '{"to": ["you@example.ru"], "subject": "Проверка", "body": "<p>Работает.</p>",
       "sender": "Магазин <noreply@mail.example.ru>",
       "auth": {"username": "<логин токена>", "password": "<пароль токена>"}}'

Разбор ошибок

СимптомПричина и решение
Таймаут или Greeting never received SSL/TLS выключен на порту 465 либо порт заблокирован на вашем сервере с n8n — попробуйте 8587 или 8465.
wrong version numberSSL/TLS включён на порту 587. Выключите его.
535 — ошибка авторизацииНеверный логин или пароль токена.
550 from must be equal to …From Email не на подтверждённом домене.
HTTP 400 Invalid username or passwordНеверный токен в auth тела запроса.
HTTP 400 JSON parse error Значение подставлено без JSON.stringify или поле не в режиме выражения.
Письма в спамеУ нового домена ещё нет истории отправки — смотрите раздел о репутации.

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

Включать ли SSL/TLS в SMTP-учётке n8n?

Для порта 587 — нет: соединение начинается без шифрования и переводится в TLS командой STARTTLS, это n8n делает сам, если не включён Disable STARTTLS. Для порта 465 — да: там TLS начинается с первого байта. Перепутанный переключатель — обычная причина ошибки рукопожатия или таймаута.

Почему n8n пишет «Invalid login: 535 Authentication failed»?

Неверные User или Password в учётке. User — это логин токена вашего домена, а не адрес аккаунта, Password — пароль этого токена, который показывается один раз при создании.

Можно ли указать имя отправителя в поле From Email?

Да, узел Send Email принимает формат «Имя <адрес>». Адрес должен быть на подтверждённом домене, иначе письмо будет отклонено.

SMTP или HTTP Request — что выбрать?

Узел Send Email проще и хранит токен в зашифрованном хранилище учёток n8n. HTTP Request даёт шаблоны из панели, ключ идемпотентности для безопасных повторов и ответ с идентификатором письма, который приходит во всех вебхуках доставки.

Как убрать подпись n8n из писем?

В узле Send Email добавьте опцию Append n8n Attribution и выключите её.

Как повторить неудачную отправку?

В настройках узла (Settings) включите Retry On Fail и задайте Max Tries и Wait Between Tries. В HTTP Request передавайте idempotency_key — тогда повтор после таймаута не отправит письмо второй раз.

Что дальше