Временная почта с API. Теория

в 14:40, , рубрики: api, diy или сделай сам, email, метки: ,

Введение

Проанализировав результаты, выдаваемые Гуглом, по запросам, связанным с API сервисов временной почты, пришёл к неутешительному выводу: таких сервисов попросту нет, или в лучшем случае они есть, но описанное на них API не функционирует.

Необходимость такого явления как API для почты, темболее временной, можно, конечно, поставить под сомнение, но это не значит, что оно бесполезно. Стоит, хотя бы, взглянуть на следующие плюсы:

  • Основная задача — разовая регистрация на ресурсах (создал аккаунт, скачал файл, забыл) и не желание оставлять свои данные, на сайтах не внушающих доверия;
  • Возможность гибкой реализации (будь то программа висящая в трее, плагин для браузера, веб-сервис и тд и тп);
  • Использование в ПО, автоматизирующем определённые действия.

Основа

В основе разработки лежит одна простая функция почтового сервера — отправлять все письма, отправленные на несуществующий ящик (к примеру vasyagesg@domen.ru) на почту, зарегистрированную на сервере (пусть это будет service@domen.ru). Таким образом мы уходим от огромного кол-ва учётных записей, используя лишь одну — «системную».

Шаг 1. Выдача адресов.

База данных состоит всего из одной таблицы, в которой мы храним emeil, ключ доступа к нему и некоторую дополнительную информацию (ID, дату регистрации и тд).

Емейл и ключ — основной рабочий инструмент, как для пользовательской стороны, так и для серверной и создаются они при помощи великого и могучего рандома, после чего отдаются пользователю.

Ключ в дальнейшем будет использоваться для получения доступа к ящику.

Пример запроса:
http://domen.ru/api.php?action=new

Пример ответа:
{"email":"ogmzyxnd11@domen.ru","key":"Bahy1tfgnOezwn87Ssjd4cnK6scJCO5D"}

Дальнейшие команды от пользователя всегда будут содержать параметр key в качестве идентификационного элемента.

Шаг 2. Список писем

Мы помним, что все письма скидываются на один ящик, поэтому нам достаточно осуществить поиск по входящей почте, используя адрес получателя (полученный из базы, исходя из ключа, переданного пользователем).

На выходе получим список писем, который адресованы именно на тот емейл, который принадлежит нашему пользователю.
Для дальнейшего удобства пронумеруем их и передадим «клиенту» только ID сообщения, тему и отправителя.

Пример запроса:
http://domen.ru/api.php?action=maillist&key=Bahy1tfgnOezwn87Ssjd4cnK6scJCO5D

Пример ответа:
[{"id":0,"subject":"u0420u0435u0433u0438u0441u0442u0440u0430u0446u0438u044f u043du0430","from":"support@MickJagger.ru"}]

Шаг 3. Тело письма

Каждое письмо на сервере имеет свой уникальный ID, тем не менее мы сообщаем пользователю ID письма исходя из его личного INBOX'а. Не столько в целях безопасности, сколько ради некоторого удобства.

По запросу с ID письма возвращаем тело сообщения:

Пример запроса:
http://domen.ru/api.php?action=mail&id=0&key=Bahy1tfgnOezwn87Ssjd4cnK6scJCO5D

Пример ответа:
Привет!

Заключение

Чтобы почта стала временной, нам остаётся дописать в cron задание по удалению почты с получателями, которые были зарегистрированы некоторое время назад и стереть соответствующие записи в БД.

Автор: ZolanPro

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js