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

インストール

パッケージは 1 つ、依存関係は 3 つ、Python 3.10 以上で動作する。

インストール

現在のリリースは 0.0.1。TypeScript SDK のすべてのメソッドに対応するメソッドを、同じ名前の snake_case で備えており、欠けたものや異なるリクエストを送るものがあれば、パッケージのパリティチェックがビルドを失敗させる。

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

init は共有の openemail クライアントを一度だけ設定し、それ以降に openemail を import したモジュールはすべてそのクライアントを受け取る。省略した場合は、最初の呼び出しが代わりに OPENEMAIL_API_KEY からクライアントを構築する。

リクエストボディは API 自身のフィールド名を持つただの dict なので、from、replyTo、scheduledAt は API リファレンスとまったく同じ名前で書ける。レスポンスも dict である。すべてのボディとレスポンスには openemail.types に TypedDict があるので、エディターがキーを補完し、型チェッカーがキーの綴り誤りを検出する。

send() が戻ったことはメッセージが送信済みであることを意味しない。スケジュール送信やキャンセル可能な送信は queued または scheduled として返り、後から確定する。呼び出しが戻ったという事実ではなく、status を読むこと。

動作環境

Python 3.10 以降で動作する。依存関係は、HTTP 用の httpx、非同期クライアント用の anyio、型用の typing-extensions の 3 つである。すべてのリクエストは httpx を通り、独自の httpx.Client を渡すことも、AsyncOpenEmail 向けに httpx.AsyncClient を渡すこともできる。

OpenEmail はスクリプト、ワーカー、同期型の Web アプリに向き、AsyncOpenEmail は asyncio や trio のイベントループに向く。どちらも同じメソッドを持ち、この 1 つのパッケージに同梱されている。

1 つのクライアントはスレッド間で安全に共有できるので、ワーカープロセスに必要なのは 1 つだけである。クライアントはコネクションプールを 1 つ保持し、それは close() を呼ぶか with ブロックを抜けると閉じられる。

パッケージには py.typed が含まれ、strict モードの mypy と pyright を通過するので、型チェッカーはすべてのメソッド、ボディ、レスポンスを書かれたとおりに読み取る。

クライアントはメールを送信しメールボックスを読み取れるワークスペース API キーを保持するため、サーバー、ジョブ、または自分のマシンで動くツールに置くものである。キーは環境変数かシークレットマネージャーに保管し、決してコードに書かないこと。