@brojs/mailer
v2.0.6
Published
mailer helper
Readme
@brojs/mailer
Пакет для работы с email в проектах BroJS: очередь писем с таймером, шаблоны с подстановкой {{key}}, резервный SMTP.
Установка
npm install @brojs/mailerИспользование
Инициализация
Один раз при старте приложения вызвать init():
const path = require('path');
const { init, configs } = require('@brojs/mailer');
init({
userName: process.env.SMTP_MAIL_LOGIN,
password: process.env.SMTP_MAIL_PASSWORD,
smtpConfig: configs.yandex,
adminMails: process.env.ADMIN_MAILS,
templatesDir: path.join(process.cwd(), 'email', 'templates'),
});Опция templatesDir (необязательная) — путь к папке с HTML-шаблонами. При инициализации все файлы с расширением .html (регистронезависимо) загружаются и регистрируются по имени без расширения (например, notification.html → шаблон notification). Обрабатываются только файлы непосредственно в указанной папке, без рекурсии. Если путь не передан, пустой, не существует или не является директорией, загрузка не выполняется (при несуществующей/не-директории выводится предупреждение в консоль). Дубликаты имён: последний файл перезаписывает предыдущий.
Отправка писем
const { Request, addToQueue } = require('@brojs/mailer');
addToQueue(new Request({
email: '[email protected]',
header: 'Тема письма',
body: '<p>Текст письма</p>',
}));Шаблоны
Регистрация вручную: addTemplate(name, template). Подстановки в шаблоне: {{key}}.
Отправка по шаблону:
const { Request, addTemplateQueue } = require('@brojs/mailer');
addTemplateQueue(
'welcome',
new Request({ email: '[email protected]', header: 'Добро пожаловать', body: '' }),
{ name: 'Иван', link: 'https://example.com/activate' }
);Если задан templatesDir, шаблоны из папки доступны сразу после init() — отдельный обход через fs в приложении не нужен.
Опции init()
| Опция | Обязательная | Описание |
|-------|--------------|----------|
| userName | да | Логин SMTP (адрес отправителя) |
| password | да | Пароль SMTP |
| adminMails | да | Адреса администраторов |
| smtpConfig | да | Объект { host, port, secure }, можно configs.yandex |
| reserveLogin, reservePasswd, reserveSmtpConfig | нет | Резервный SMTP при сбое основной отправки |
| queueTimer | нет | Интервал опроса очереди, мс (по умолчанию 1000) |
| batchSize | нет | Сколько писем за один цикл (по умолчанию 1) |
| batchInterval | нет | Пауза между письмами в батче, мс (по умолчанию 0) |
| templatesDir | нет | Путь к папке с .html шаблонами; загрузка при инициализации |
Загрузка шаблонов из папки (templatesDir)
- Файлы: только с расширением
.htmlили.HTML(регистронезависимо). - Имя шаблона: имя файла без расширения (
notification.html→notification). Файл только с расширением (например.html) пропускается. - Кодировка: UTF-8.
- Уровень: только файлы в указанной папке, без подпапок.
- Ошибки: несуществующая или не-директория — предупреждение в консоль, приложение не падает. Ошибка чтения отдельного файла — сообщение в консоль, обработка остальных продолжается.
Разработка
npm testЛицензия
MIT
