Mail API
HTTP API 経由のトランザクションメール: Brevo、Mailgun、Mailjet、Maileroo、Postmark、Mailchimp、Resend、SendGrid、MailerSend、Scaleway。
プラグイン
Mail API
HTTP API 経由のトランザクションメール: Brevo、Mailgun、Mailjet、Maileroo、Postmark、Mailchimp、Resend、SendGrid、MailerSend、Scaleway。
説明
Mail API は、メールプロバイダーの HTTP API を EmDash のメール送信手段にします。サインインリンク、招待、プラグインのメールは、SMTP サーバーなしで Brevo、Mailgun、Postmark などのサービスを通じて送信されます。
機能
- 10 のプロバイダー: Brevo、Mailgun、Mailjet、Maileroo、Postmark、Mailchimp Transactional(Mandrill)、Resend、SendGrid、MailerSend、Scaleway TEM。
- 認証済みの送信元: プロバイダーで認証済みのアドレスまたはドメインを選ぶか、手入力できます。
- アカウントの状態: プラン、クレジット、クォータ、評価を、プロバイダーの API から取得します。
- 対処しやすいエラー: プロバイダー自身のメッセージに、HTTP ステータス、エラーコード、ヒント、解決方法のページへのリンク、生のレスポンスを添えて表示します。
- 再試行キュー: プロバイダーが停止しているときやレート制限のときは、メールが暗号化されたキューで待機し、間隔を延ばしながら再送されます。
- 履歴とログ: すべての送信について、ステータス、メッセージ ID、試行回数、所要時間を記録し、フィルター、再送、14 日間のグラフ、ダッシュボードウィジェットを備えています。
- 各プロバイダーのページにテストフォームがあります。
- 暗号化: API キーは EmDash のシークレットとして保存され、保持するメール本文は暗号化され、サインインメールは保持されません。
- 管理画面は英語、フランス語、ドイツ語に対応し、スマートフォンでも使えます。
プロバイダー
| プロバイダー | 認証情報 | 一覧表示できる送信元 | アカウントの状態 |
|---|---|---|---|
| Brevo | API キー | アドレス | プラン、クレジット |
| Mailgun | API キー、ドメイン、リージョン | ドメイン | ドメインの状態 |
| Mailjet | API キー、シークレットキー | アドレス、ドメイン | なし |
| Maileroo | 送信キー | なし | なし |
| Postmark | サーバートークン | なし | サーバー、モード |
| Mailchimp Transactional | Mandrill キー | ドメイン | 評価、クォータ |
| Resend | API キー | ドメイン | プラン、クォータ |
| SendGrid | API キー | アドレス、ドメイン | プラン、クレジット |
| MailerSend | API トークン | アドレス、ドメイン | API クォータ |
| Scaleway TEM | シークレットキー、プロジェクト ID | ドメイン | プラン、使用量 |
送信元が一覧表示されないプロバイダーでは、アドレスを手入力してください。
インストール
要件
- プラグインのサンドボックスランナーを備えた EmDash 1.3.0 以降: Cloudflare Worker Loader(Workers Paid プラン)、または Node.js 上の
@emdash-cms/sandbox-workerd。 - サイトに
EMDASH_ENCRYPTION_KEYが必要です。API キーの暗号化に使われます。npx emdash secrets generateで作成し、Cloudflare ではwrangler secret put EMDASH_ENCRYPTION_KEYで保存してください。コピーをシークレットマネージャーに保管してください。これがないと、データベースのバックアップは役に立ちません。 - 再試行キュー用のスケジューラー: Node.js では組み込みです。Cloudflare では
* * * * *の cron トリガーとscheduledハンドラーが必要です(EmDash のテンプレートには両方含まれています)。 - 対応プロバイダーのいずれかのアカウントと API キー。
インストール方法
- プラグインレジストリから Mail API をインストールします。
- 権限を確認して承認します。許可されるのは、プロバイダーの API ホストへのリクエストと、EmDash のメールの配信のみです。
npm からインストールする場合: pnpm add @devbitme/emdash-plugin-apimail を実行し、astro.config.mjs の emdash() インテグレーション内の sandboxed: [...] にデフォルトインポートを追加します。
セットアップ
- 管理画面で Mail API を開き、使用するプロバイダーの Configure を選びます。
- キーを貼り付けて保存します。Account セクションで、キーが動作することを確認できます。
- Send a test email で認証済みの送信元を選び、自分のアドレスを入力して送信します。その送信元を保持するには、Use as the default sender をオンのままにします。
- 一覧のプロバイダーのカードで Activate をクリックします。
- 複数のメール送信手段がインストールされている場合は、Settings → Email で Mail API を選びます。
astro devでは、EmDash のコンソール送信手段もその 1 つに数えられます。
設定
Queue & history タブでは、メールがキューで待機できる時間(既定ではサインインメールが 15 分、それ以外が 24 時間)、メール本文を保持するかどうか、履歴とログの保存期間(既定では 30 日)を設定します。
完全なドキュメント: https://git.devbit.me/devbit.me/emdash-plugin-apimail
よくある質問
SMTP サーバーは必要ですか?
いいえ。Mail API は HTTPS でプロバイダーの HTTP API を呼び出すため、Cloudflare Workers のように SMTP が使えない環境でも動作します。
EmDash の「Send test email」では「Failed to send test email」としか表示されません。
プロバイダーのページにある Send a test email フォームを使ってください。プロバイダーのメッセージ、ヒント、生のレスポンスが表示されます。エラーは Logs とサーバーログにも記録されます。
送信元の一覧が空、または HTTP 401 や 403 が表示されます。
そのキーは送信はできますが、送信元の一覧取得はできません。Resend には Full access キー、SendGrid には Sender Authentication と User Account の読み取りアクセス、MailerSend には Domains と Sender identity、Scaleway には TransactionalEmailReadOnly が必要です。Mailgun ではドメインの送信キーではなくアカウントキーが必要です。送信元のアドレスは引き続き手入力できます。
エラーで IP アドレスが許可されていないと表示されます。
ホストの送信元 IP をプロバイダーの許可リストに追加するか、制限をオフにしてください。エラーには、該当するページへのリンクが表示されます。
プロバイダーが停止しているときはどうなりますか?
ネットワークエラー、タイムアウト、HTTP 429 と 5xx の場合、メールは暗号化されたキューに入ります。1 分、5 分、15 分、30 分後、続いて 1 時間、2 時間、その後は 4 時間ごとに、その時点で有効なプロバイダーを通じて再試行されます。サインインメールは 15 分後、それ以外のメールは 24 時間後に期限切れになります。無効なキーや拒否された受信者などの恒久的なエラーは再試行されません。
キューが動作しません。
Mail API の Security タブを開いてください。スケジュールされたタスクが一覧表示され、Repair ボタンがあります。Cloudflare では、cron トリガーと scheduled ハンドラーを確認してください。
メールの内容は保存されますか?
キューで待機している間のみ、または Keep email content in the history をオンにした場合は履歴に保存されます。どちらの場合も暗号化されます。サインインメールと招待メールは、送信後は保持されません。
複数のプロバイダーを使えますか?
はい。複数を設定し、送信に使うものの Activate をクリックします。障害が発生したときは別のプロバイダーを有効にすると、キュー内のメールがそのプロバイダーを通じて再送されます。
セキュリティ
脆弱性の報告
[email protected] にメールしてください。先に公開 issue を作成しないでください。
権限
- ネットワークリクエスト: プロバイダーの API ホストのみに限定されます。
api.brevo.com、api.mailgun.net、api.eu.mailgun.net、api.mailjet.com、api.us.mailjet.com、smtp.maileroo.com、api.postmarkapp.com、mandrillapp.com、api.resend.com、api.sendgrid.com、api.eu.sendgrid.com、api.mailersend.com、api.scaleway.com。 - メール送信手段: EmDash は送信メールをプラグインに渡し、プラグインが有効なプロバイダーを通じて送信します。
プラグインは EmDash のサンドボックス内で動作し、それ以外には一切アクセスできません。
API キー
API キーは EmDash のシークレット設定であり、サイトの EMDASH_ENCRYPTION_KEY を用いて AES-GCM で暗号化されます。保存したキーがブラウザーに戻されることはありません。管理画面には末尾 5 文字だけが表示されます。プロバイダーがエラーメッセージに含めて返した設定済みのシークレットは、マスクされます。
保存されるデータ
- 履歴: 受信者、件名、プロバイダー、ステータス、メッセージ ID、試行回数、所要時間、エラー。既定では 30 日後に削除されます。
- メール本文: メールがキューで待機している間のみ、またはオンにした場合は履歴に保持されます。ランダムな 256 ビットのキーを用いて AES-GCM で暗号化され、そのキー自体も EmDash のシークレットとして保存されます。サインインメールと招待メールは、送信後は保持されません。
- ログ: 失敗、キューの実行、削除。履歴とともに削除されます。
- 認証済みの送信元とアカウントの状態: 設定のフィンガープリントとともにプラグインのストレージにキャッシュされます。キーは含まれません。
メールは有効なプロバイダーの API にのみ送られます。それ以外のものがサイトの外に出ることはありません。
公開ルート
公開されているルートは 1 つです: GET /_emdash/api/plugins/apimail/logo?p=。プラグインに同梱されているプロバイダーのロゴを提供し、データは読み取りません。
管理画面
管理ページは非公開のルートを使います。プラグインが動作する前に、EmDash はプラグインの管理が許可されたサインイン済みのユーザーと CSRF ヘッダーを要求します。
変更履歴
0.3.1
- プロバイダーカードを 1 行に 2 枚ではなく 3 枚表示: デスクトップでより引き締まった一覧になりました。
- 各プロバイダーカードに Website リンクを追加し、新しいタブで開きます。
- Set as default を Activate に変更。スマートフォンのカードに収まる短さです。
- プロバイダーのページは、保存済みデータからその経過時間とともにすぐ開きます。プロバイダーが呼び出されるのは、キーを保存したときまたは **Refresh from ** を使ったときだけで、呼び出しにかかった時間がメッセージで表示されます。
0.3.0
- 設定済みの各プロバイダーのカードに Set as default ボタンを追加。
- 認証済みの送信元やアカウントの状態の取得に失敗した場合は、ログに記録され、キーに権限がない場合を除き、次回のページ読み込み時に再試行されます。
- 送信元の一覧に、取得した時刻が表示されます(エラーの後も同様)。
- 管理ページがスマートフォンに合わせて調整されました。プロバイダーカードは 1 行に 2 枚、統計カードは最大 3 枚、長い値は専用の行に表示され、履歴の列は減りました。
- メニュー項目を短縮: History、Queue、Logs。
- ラベル、ログ、エラー、テストメールの件名で、長いダッシュの代わりに通常のハイフンを使用。
- バンドルを小型化: プロバイダーのロゴは可逆圧縮の WebP タイルです。
- レジストリの掲載内容: 説明、インストール、FAQ、変更履歴、セキュリティの各タブとバナー。
0.2.0
- プロバイダーから認証済みの送信元を選択: 認証済みのアドレス、認証済みドメイン上の任意のアドレス、または手入力。Sender タブと各テストフォームで利用できます。
- 各プロバイダーのページにアカウントの状態を表示: プラン、クレジット、クォータ、評価。
- テストに設定済みの送信元が不要になり、Use as the default sender で成功した送信元が保持されます。
- 保存したキーの末尾 5 文字が表示されます。
- ドイツ語の管理画面。