sender-smtp
SMTP Sender written in Golang
Конфигурация
Переменные окружения
TODO: ...
Пример файла конфигурации
application:
listen: 0.0.0.0:5555
db: /etc/senderapi/database.db
jwt:
secret: ...
algorithm: HS256
База данных
Create SMTP record
insert into smtp (project_id, server, port, sender_login, sender_password)
values ('3854d9ce-9e27-11ea-9b45-c42c033a81ea', 'smtp.google.com', 587, 'noreply@google.com', '$3cr3t');
Create template
insert into `templates` (project_id, template)
values ('3854d9ce-9e27-11ea-9b45-c42c033a81ea', '<!DOCTYPE HTML PULBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>{{ . }}<br>
<div class="moz-signature"><i><br>
<br>
Regards<br>
Vyacheslav Anzhiganov<br>
<i></div>
</body>
</html>');
Использование
Авторизация
Для получения доступа к управлению сервисом необходимо получить ключ JWT. Полученный ключ необходимо отправлять в заголовке Authorization
.
Примерное содержание JWT-ключа:
{
"token": "9da9bc2c-b394-11ea-94ee-76133ed1bebd",
"user": {
"id": "61f784b1-31a0-4117-a828-40568df8dddc",
"email": "mail@mail.ru"
},
"exp": 1592812546
}
Внутри сервиса, для каждого проекта генерирется постоянный секретный ключ. Отправка сообщений происходит с использованием данного ключа.
CURL
Создание проекта
Запрос
curl gocloud.ru/api/smtp/v1/projects -XPOST \
-H 'Authorization: __JWT__'
-d '{"name": "Project name", "secret": "S3cr3t"}'
Ответ
{"id":"c5eb632a-8dbe-4c95-955d-fa9ed621d060"}
Добавление учетной записи SMTP
curl gocloud.ru/api/smtp/v1/smtp -XPOST \
-H 'Authorization: __JWT__'
-d '{"project_id": "c5eb632a-8dbe-4c95-955d-fa9ed621d060", "smtp_server": "smtp.google.com", "smtp_port": 587, "smtp_login": "noreply@google.com", "smtp_password": "$3cr3t"}'
Ответ
{"id":"c5eb632a-8dbe-4c95-955d-fa9ed621d060"}
Добавление шаблона
curl gocloud.ru/api/smtp/v1/templates -XPOST \
-H 'Authorization: __JWT__'
-d '{"project_id": "c5eb632a-8dbe-4c95-955d-fa9ed621d060", "template": "<html>"}'
Ответ
{"id":"a15e4ed5-1346-40d8-9f82-c69b693c4809"}
Запрос для отправки письма в виде HTML
curl localhost:5555/api/v1 -XPOST \
-H 'X-Secret-Key: qwerty' \
-H 'X-Project-ID: 3854d9ce-9e27-11ea-9b45-c42c033a81ea' \
-H 'X-Template-ID: a15e4ed5-1346-40d8-9f82-c69b693c4809' \
-d '{"message": "wqeqwewe\ndwdwdw", "subject": "wqewqe", "to": "info@gmail.com", "content-type":"html"}'
Запрос для отправки письма в виде текста
curl localhost:5555/api/v1 -XPOST \
-H 'X-Secret-Key: qwerty' \
-H 'X-Project-ID: 3854d9ce-9e27-11ea-9b45-c42c033a81ea' \
-d '{"message": "wqeqwewe\ndwdwdw", "subject": "wqewqe", "to": "info@gmail.com", "content-type":"plain"}'
Ответ
{"id":"6f527846-9dc3-11ea-ae6e-c42c033a81ea"}