Zur Dokumentation springen
Ruby

Installation

Ein Gem, keine Laufzeitabhängigkeiten, Ruby 3.2 und neuer.

Installation

Das aktuelle Release ist 0.0.1. Es hat eine Methode für jede Methode des TypeScript-SDK, unter demselben Namen in snake_case, und die Paritätsprüfung des Gems lässt den Build fehlschlagen, wenn eine fehlt oder eine andere Anfrage sendet.

bundle add openemail
send_email.rb
require "openemail" OpenEmail.init(api_key: ENV.fetch("OPENEMAIL_API_KEY")) email = OpenEmail.emails.send(  from: "Acme Billing <[email protected]>",  to: "[email protected]",  subject: "Your September invoice",  html: "<p>Invoice attached.</p>") puts email[:id], email[:status]

OpenEmail.init konfiguriert den gemeinsamen Client einmal, und von da an verwenden ihn OpenEmail.emails, OpenEmail.threads und jeder andere Namespace, in jeder Datei. Lassen Sie es weg, baut der erste Aufruf den Client stattdessen aus OPENEMAIL_API_KEY.

Eine Antwort ist das geparste JSON als Hash mit Symbol-Schlüsseln, email[:id] liest also die id. Die Schlüssel behalten die Namen der API. Deshalb bleibt ein Feld wie scheduledAt in camelCase, während die Methoden und ihre Optionen snake_case sind.

Dass send zurückkehrt, heißt nicht, dass die Nachricht verschickt ist. Ein geplanter oder abbrechbarer Versand kommt als queued oder scheduled zurück und steht erst später fest. Lesen Sie status, nicht die Tatsache, dass der Aufruf zurückgekehrt ist.

Wo es läuft

Ruby 3.2 und neuer, ohne Laufzeitabhängigkeiten. Der HTTP-Client ist Net::HTTP aus der Standardbibliothek, mit einem Pool von Keep-Alive-Verbindungen, sodass eine zweite Anfrage an die API die Verbindung wiederverwendet, die die erste geöffnet hat.

Ein Client kann gefahrlos von mehreren Threads gemeinsam genutzt werden, ein Puma- oder Sidekiq-Prozess braucht also nur einen. Nach einem Fork, wie im Cluster-Modus von Puma, bei Unicorn oder Resque, öffnet der Kindprozess eigene Verbindungen, statt die des Elternprozesses wiederzuverwenden.

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 Tool, das auf Ihrem eigenen Rechner läuft. Bewahren Sie den Schlüssel in Rails.application.credentials oder einer Umgebungsvariable auf, nie im Code.