Состоит из двух частей: сервер на Node.js и клиент на TypeScript + react-redux.
$ npm i
$ npm run server:build
Вероятнее всего, вы захотите изменить некоторые значения в конфигурации.
Создайте файл config.json
и переопределите нужные значения из config.default.json
.
Пример конфигурации файла config.json
:
}
//конфигурация клиента
"client": {
"apiUrl": "/api",
"imageServiceUrl": "/images", //URL сервера для загрузки вложений, см. https://gitlab.eterfund.ru/ipfs-images/ipfs-images
"webpack": {
"port": 8080,
"publicPath": "http://localhost:8080/"
}
},
//конфигурация сервера
"server": {
"corsWhitelist": ["https://examplehost.com"], //массив URL-адресов для CORS
"fakeSender": false, //предназначен для отладки сервера, при установке значения true вместо отправки рассылки выводит информацию о ней в консоль
"logLevel": "silly", // error, warn, info, verbose, debug, silly
"mail": {//параметры письма рассылки
"from": "someuser@example.com",
"listIdDomain": "some.domain"
},
//параметры паузы в рассылке (для работы необходимо указать оба поля)
"maxEmailsWithoutPause": 3, //количество успешно отправленных писем перед паузой в рассылке
"pauseDuration": 10, //длительность паузы в секундах
"port": 8020,
"redis": {
"db": 0,//номер БД Redis
"pool": {//конфигурация пула соединений Redis
"min": 1, //минимальное количество соединений
"max": 5 //максимальное количество соединений
},
"testingDb": 1 //номер БД Redis для тестирования
},
"smtp": {//параметры smtp-сервера
"host": "localhost",
"port": 9025
},
"subscription": {//параметры подписок на расслыки
"requestTTL": 1209600, //время жизни запроса на подписку в redis
"subject": "Подписка на рассылку" //тема письма при запросе подписки на рассылку
}
}
}
После этого можно запускать сервер:
$ npm run server:start
или
$ node dist/server/index.js
Если клиент тоже нужен - то перед его сборкой создайте файл email-template.html. Если шаблон письма не нужен, то просто оставьте его пустым.
Далее запустите сборку:
$ npm run client:build
И настройте ваш веб-сервер на раздачу содержимого каталога client/public
.
Для хранения информации о рассылках используется redis. Рассылка имеет следующие атрибуты:
- ID;
- Название;
- Состояние (NEW = 1, RUNNING = 2, PAUSED = 3, FINISHED = 4, ERROR = 5);
- Заголовки (уникальным для каждой рассылки является заголовок
List-Id
. Он генерируется
автоматически из времени создания рассылки в формате 'YYYYMMDD', id рассылки и параметраlistIdDomain
.
Необходим для просмотра статистики по рассылкам.); - Список адресатов;
- Количество уже обработанных адресатов.
См. файл LICENSE.