インストール
パッケージは 1 つ、依存関係は 3 つ、Python 3.10 以上で動作する。
インストール
現在のリリースは 0.0.1。TypeScript SDK のすべてのメソッドに対応するメソッドを、同じ名前の snake_case で備えており、欠けたものや異なるリクエストを送るものがあれば、パッケージのパリティチェックがビルドを失敗させる。
pip install openemailimport 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 キーを保持するため、サーバー、ジョブ、または自分のマシンで動くツールに置くものである。キーは環境変数かシークレットマネージャーに保管し、決してコードに書かないこと。