You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
vyacheslav anzhiganov 838f8366e9 #3 исправил ошибку с systemd unit 1 year ago
build/pkg-debian #3 исправил ошибку с systemd unit 1 year ago
.gitignore реализовал задачу #2 2 years ago
LICENSE Initial commit 2 years ago
Makefile реализовал задачу #2 2 years ago
README.md #3 исправил ошибку ёёёё 1 year ago
config.go init 2 years ago
endpoint_sendmail_v1.go update for using sqlite database 2 years ago
go.mod #3 исправил ошибку ёёёё 1 year ago
main.go #3 исправил ошибку с systemd unit 1 year ago
struct_config.go #3 исправил ошибку ёёёё 1 year ago
struct_request.go init 2 years ago
struct_response.go init 2 years ago

README.md

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"}