ドキュメント本文へスキップ
Python

Python SDK

OpenEmail API の公式 Python クライアント。同期と非同期の両方に対応し、全体が型付けされ、エンドポイントごとに 1 つのメソッドがある。

内容

API 全体(送信、テンプレート、トラッキング、スレッド、下書き、ラベル、連絡先、オーディエンス、登録フォーム、一斉配信、ドメイン、ルール、Webhook、カレンダー、設定、ロール、メンバー、抑止、ファイル、使い捨て受信箱)を 1 つのパッケージにまとめ、すべてのリクエストとレスポンスの TypedDict、2 つのエラークラス、送信を重複させない再試行、Webhook 署名の検証機能を備えている。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 リファレンスが記述しているのと同じ面である。エンドポイントが何をするかはそちらを、どう呼び出すかはこちらを読むこと。文書化されたすべての操作に 1 つのメソッドが対応し、パッケージのパリティチェックが OpenAPI ドキュメントを読んでそれを証明する。

TypeScript のすべてのメソッドには、同じ名前を snake_case にした Python の対応メソッドがある。パリティチェックは各ペアを同じ引数で実行し、同じリクエストを送り、同じようにリトライし、同じ値を返さない限り失敗する。