Перейти к документации
Python

SDK для Python

Официальный клиент на Python для API OpenEmail. Синхронный и асинхронный, полностью типизированный, с одним методом на каждый эндпоинт.

Что это

Один пакет для всего API (отправка, шаблоны, отслеживание, цепочки, черновики, метки, контакты, аудитории, формы подписки, рассылки, домены, правила, вебхуки, календарь, настройки, роли, участники, подавления, файлы и одноразовые ящики) с TypedDict для каждого запроса и ответа, двумя классами ошибок, повторами, которые не могут задвоить отправку, и проверкой подписей вебхуков. Он работает на Python 3.10 и новее и зависит только от httpx, anyio и typing-extensions. Он использует API-ключ рабочего пространства или токен доступа OAuth, поэтому его место на сервере или в инструменте, который работает на вашей собственной машине, а одноразовые ящики являются единственной частью, которой не нужны учётные данные.

pip install openemail
send_email.py
import os from openemail import init, openemail init(os.environ['OPENEMAIL_API_KEY']) openemail.emails.send({    'from': 'Acme Billing <[email protected]>',    'to': '[email protected]',    'subject': 'Your September invoice',    'html': '<p>Invoice attached.</p>',})

Синхронно и асинхронно

OpenEmail синхронный, а AsyncOpenEmail является его асинхронным аналогом с теми же опциями и теми же методами, каждый из которых вызывается через await. Он работает на asyncio и trio, а постраничный iterate превращается в async for.

send_email_async.py
import asyncio from openemail import AsyncOpenEmail  async def main() -> None:    async with AsyncOpenEmail() as client:        email = await client.emails.send({            'from': 'Acme Billing <[email protected]>',            'to': '[email protected]',            'subject': 'Your September invoice',            'html': '<p>Invoice attached.</p>',        })         async for thread in client.threads.iterate(folder='inbox'):            print(thread['id'])         print(email['id'], email['status'])  asyncio.run(main())

Общий клиент openemail синхронный, поэтому AsyncOpenEmail постройте сами, один раз, и закройте его через aclose() или блок async with.

Куда идти дальше

Он оборачивает тот же API, что и все остальные клиенты

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

У каждого метода TypeScript есть аналог на Python под тем же именем в snake_case, а проверка соответствия запускает каждую пару с одинаковыми аргументами и падает, если они не отправляют один и тот же запрос, не повторяют его одинаково или не возвращают одно и то же значение.