Installation
Ein Paket, drei Abhängigkeiten, Python 3.10 und neuer.
Installation
Die aktuelle Veröffentlichung ist 0.0.1. Diese Version hat zu jeder Methode des TypeScript-SDK eine Methode unter demselben Namen in snake_case, und die Paritätsprüfung des Pakets lässt den Build scheitern, wenn eine fehlt oder eine andere Anfrage sendet.
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 konfiguriert den gemeinsamen openemail-Client einmalig, und jedes Modul, das danach openemail importiert, erhält diesen Client. Lassen Sie es weg, dann baut der erste Aufruf den Client stattdessen aus OPENEMAIL_API_KEY.
Ein Request-Body ist ein einfaches dict mit den eigenen Feldnamen der API, from, replyTo und scheduledAt lesen sich also genau wie in der API-Referenz, und eine Antwort ist ebenfalls ein dict. Zu jedem Body und jeder Antwort gibt es ein TypedDict in openemail.types, Ihr Editor vervollständigt also die Schlüssel, und ein Typprüfer erkennt einen falsch geschriebenen.
Dass send() zurückkehrt, bedeutet nicht, dass die Nachricht hinaus ist. Ein geplanter oder abbrechbarer Versand kommt als queued oder scheduled zurück und wird später abgeschlossen. Lesen Sie status und nicht die Tatsache, dass der Aufruf zurückgekehrt ist.
Wo es läuft
Python 3.10 und neuer, mit drei Abhängigkeiten: httpx für HTTP, anyio für den asynchronen Client und typing-extensions für die Typen. Jede Anfrage läuft über httpx, und Sie können dem Client einen eigenen httpx.Client übergeben, oder einen httpx.AsyncClient für AsyncOpenEmail.
OpenEmail passt zu Skripten, Workern und synchronen Web-Apps, AsyncOpenEmail zu einer Event-Loop, auf asyncio oder trio. Beide werden in diesem einen Paket mit denselben Methoden ausgeliefert.
Ein Client lässt sich gefahrlos zwischen Threads teilen, ein Worker-Prozess braucht also nur einen. Er hält einen Verbindungspool, den close() oder das Ende eines with-Blocks schließt.
Das Paket liefert py.typed mit und besteht mypy und pyright im strikten Modus, ein Typprüfer liest also jede Methode, jeden Body und jede Antwort so, wie sie geschrieben sind.
Der Client trägt einen Workspace-API-Schlüssel, der Mail senden und das Postfach lesen kann, er gehört daher auf einen Server, in einen Job oder in ein Werkzeug, das auf Ihrem eigenen Rechner läuft. Bewahren Sie den Schlüssel in einer Umgebungsvariable oder einem Secret-Manager auf, nie im Code.