Простой сервис для отправки писем по протоколу SMTP. Использует очередь сообщений RabbitMQ для получения сообщений.
- Docker Quick Start
- Способы конфигурации
- Описание конфигурации
- Отправка сообщений
- Пример клиента
- Состав сообщения
- Ограничения
Build the image:
docker build ./ -t milky-mailer
And run it:
docker run milky-mailer
В данные момент поддерживается только конфигурация через Consul kv.
Для конфигурации через Consul kv необходимо указать следующие переменные окружения:
Переменная | Описание | Значение по умолчанию |
---|---|---|
CONSUL_ROOT |
Префикс ключей конфигурации приложения | milky-mailer |
CONSUL_HOST |
Адрес расположения консула | consul.servece.consul |
CONSUL_PORT |
Порт консула | 8500 |
ACL токены и другие способы аутентификации не поддерживаются. Реализация планируется в ближайшем будущем.
Здесь и далее ключи конфигурации для Consul KV
указаны относительно префикса CONSUL_ROOT
.
Ключ (для Consul KV ) |
Описание | Пример |
---|---|---|
amqp/host |
Адрес хоста, на котором расположен RabbitMQ | 127.0.0.1 |
amqp/port |
Порт, на котором расположен RabbitMQ | 5672 |
amqp/user |
Имя пользователя для подключения к RabbitMQ | user |
amqp/password |
Пароль пользователя для подключения к RabbitMQ | somepassword |
amqp/queue |
Название очереди, из которой будут получаться сообщения для отправки | email |
amqp/exchange |
Название обменника, в который будут отправляться сообщения для отправки | email |
amqp/virtualhost |
Виртуальный хост, на котором расположен RabbitMQ | / |
Можно указать несколько отправителей.
Все отправители должны быть указаны в /senders/
относительно CONSUL_ROOT
.
Ключ (для Consul KV ) |
Описание | Пример |
---|---|---|
senders/<senderID>/ |
senderID - Уникальный идентификатор отправителя |
mailer-one |
senders/<senderID>/host |
Адрес хоста, на котором расположен SMTP сервер | smtp.example.com |
senders/<senderID>/port |
Порт, на котором расположен SMTP сервер | 465 |
senders/<senderID>/user |
Имя пользователя для подключения к SMTP серверу | username |
senders/<senderID>/password |
Пароль пользователя для подключения к SMTP серверу | somepassword |
senders/<senderID>/from |
E-mail адрес отправителя (указывается в From email письма) |
[email protected] |
senders/<senderID>/tls |
Использовать TLS при подключении к SMTP серверу | true |
senders/<senderID>/from_name |
Имя отправителя (указывается в From email письма) |
Someteam corp. |
Для отправки email письма необходимо отправить сообщение в обменник. Название обменника указывается в конфигурации.
Перед отправкой сообщения необходимо убедиться, что обменник существует.
Если обменник не существует, то скорее всего milky-mailer
не запущен или конфигурация указана неверно.
Пример клиента, написанного на golang
можно найти в репозитории milky-mailer-client.
Заголовок | Описание | Пример |
---|---|---|
To |
E-mail адрес получателя | [email protected] |
Subject |
Тема e-mail письма | Какая-то тема письма |
FromID |
Идентификатор отправителя согласно конфигурации | mailer-one |
Указывается в соответствии с MIME типами. Поддерживается только text/plain
и text/html
.
Этот же тип используется для указания типа отправляемого email.
Тело сообщения используется в исходном виде для формирования email.
Для каждого сообщения следует указывать время жизни. По истечении этого времени сообщение будет удалено из очереди, если оно не было отправлено получателю.
Указывается в секундах.
В случае, если время жизни не указано, оно не будет установлено и сообщение будет жить в очереди до тех пор, пока не будет отправлено получателю.
Настоятельно рекомендуется указывать время жизни для каждого сообщения, исходя из ваших требований.
Приоритет сообщения указывается в диапазоне от 0 до 255. Чем выше приоритет, тем выше вероятность того, что сообщение будет отправлено раньше других.
Рекомендуется указывать приоритет для каждого сообщения, исходя из ваших требований.
Сообщения, у которых не указан приоритет, будут иметь самый низкий приоритет.
Приоритет | Описание |
---|---|
13 | Коды подтверждения регистрации и сбора пароля |
12 | Ответы технической поддержки |
9-11 | Уведомления безопасности (вход в систему, смена пароля, почты и т.п.) |
8 | Квитанция на оплату услуг/товара |
7 | Чек по оплате |
6 | Запрос на изменение (прав и т.п.) |
3-5 | Прочие уведомления |
0-2 | Новостная рассылка |
В случаях, когда указано несколько возможных приоритетов для задачи, то можно сделать градацию приоритетов для неё:
0
- низкий приоритет (Low)1
- нормальный приоритет (Normal)2
- высокий приоритет (High)
Для упрощения отладки и можно указать некоторые дополнительные параметры. Их наличие упростит отладку и поиск связанных логов в случае возникновения ошибок.
MessageId
- уникальный идентификатор сообщения в виде строки.AppId
- идентификатор приложения, которое отправило сообщение.Timestamp
- время отправки сообщения в форматеUnix timestamp
.
- Вложения (Attachments) не поддерживаются.
- Поддерживается только один получатель (To).
- Не поддерживается копия (CC) и скрытая копия (BCC).
- Не поддерживается подтверждение доставки (Delivery Status Notification).
- Не поддерживается Reply-To.
- И многое другое, поддержка которого не указана в документации.