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

インストール

1 つの gem、実行時の依存関係なし、Ruby 3.2 以降。

インストール

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

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 は共有クライアントを一度だけ設定し、以後はどのファイルでも OpenEmail.emails、OpenEmail.threads をはじめとするすべての名前空間がそれを使います。省略した場合は、最初の呼び出しが OPENEMAIL_API_KEY からクライアントを作ります。

レスポンスはパース済みの JSON で、Symbol キーの Hash です。そのため email[:id] で id を読めます。キーは API の名前をそのまま使うため、scheduledAt のようなフィールドは camelCase のまま、メソッドとそのオプションは snake_case です。

send が戻っても、メッセージが送信済みとは限りません。スケジュール送信やキャンセル可能な送信は queued または scheduled として返り、後から確定します。呼び出しが戻ったという事実ではなく、status を読んでください。

動作環境

Ruby 3.2 以降で、実行時の依存関係はありません。HTTP クライアントは標準ライブラリの Net::HTTP で、keep-alive 接続のプールを持つため、API への 2 回目のリクエストは 1 回目が開いた接続を再利用します。

1 つのクライアントをスレッド間で安全に共有できるため、Puma や Sidekiq のプロセスに必要なのは 1 つだけです。Puma のクラスターモード、Unicorn、Resque のように fork した後は、子プロセスは親の接続を再利用せず、自分の接続を開きます。

クライアントはメールを送信しメールボックスを読み取れるワークスペース API キーを保持するため、置き場所はサーバー、ジョブ、または自分のマシンで動くツールです。キーは Rails.application.credentials か環境変数に保管し、決してコードに書かないでください。