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。

  • 分類: email
  • 狀態: 可用
  • 版本: 0.3.1
  • 價格: 未知
  • 來源: 官方外掛註冊表
  • 安裝方式: 註冊表沙盒外掛
  • 核實日期: 2026-10-21

說明

Mail API 讓您的電子郵件服務供應商的 HTTP API 成為 EmDash 的郵件傳輸管道。登入連結、邀請郵件與外掛程式郵件都透過 Brevo、Mailgun、Postmark 或其他服務寄出,不需要 SMTP 伺服器。

功能

  • 10 家服務供應商:Brevo、Mailgun、Mailjet、Maileroo、Postmark、Mailchimp Transactional(Mandrill)、Resend、SendGrid、MailerSend 與 Scaleway TEM。
  • 已驗證的寄件者:選擇服務供應商已驗證的位址或網域,也可以手動輸入。
  • 帳號狀態:方案、額度、配額與信譽,直接從服務供應商 API 讀取。
  • 可採取行動的錯誤訊息:服務供應商自己的訊息,附帶 HTTP 狀態碼、錯誤代碼、提示、指向解決頁面的連結以及原始回應。
  • 重試佇列:當服務供應商當機或觸發速率限制時,郵件會在加密佇列中等待,並以逐漸增加的間隔重新傳送。
  • 歷史與紀錄:每次傳送都記錄狀態、訊息 ID、嘗試次數與耗時,支援篩選、重新傳送、14 天圖表與儀表板小工具。
  • 每個服務供應商頁面上都有測試表單。
  • 加密:API 金鑰是 EmDash 密鑰,保留的郵件內容經過加密,登入郵件絕不會被保留。
  • 後台支援英文、法文與德文,可在手機上使用。

服務供應商

服務供應商憑證可列出的寄件者帳號狀態
BrevoAPI 金鑰位址方案、額度
MailgunAPI 金鑰、網域、區域網域網域狀態
MailjetAPI 金鑰、密鑰(secret key)位址、網域無
Maileroo傳送金鑰無無
Postmark伺服器權杖無伺服器、模式
Mailchimp TransactionalMandrill 金鑰網域信譽、配額
ResendAPI 金鑰網域方案、配額
SendGridAPI 金鑰位址、網域方案、額度
MailerSendAPI 權杖位址、網域API 配額
Scaleway TEM密鑰(secret key)、專案 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 金鑰。

安裝方式

  1. 從外掛程式註冊表安裝 Mail API。
  2. 檢視權限並確認:僅向服務供應商 API 主機發出請求,以及投遞 EmDash 郵件。

也可以透過 npm 安裝:pnpm add @devbitme/emdash-plugin-apimail,然後把預設匯入加入 astro.config.mjs 中 emdash() 整合的 sandboxed: [...] 裡。

設定

  1. 在後台開啟 Mail API,然後點擊您的服務供應商的 Configure。
  2. 貼上金鑰並儲存。Account 區段會確認金鑰是否有效。
  3. 在 Send a test email 中選擇一個已驗證的寄件者,輸入您的位址並傳送。保持 Use as the default sender 開啟,以保留該寄件者。
  4. 在清單中點擊該服務供應商卡片上的 Activate。
  5. 如果安裝了多個郵件傳輸管道,請在 Settings → Email 下選擇 Mail API。在 astro dev 下,EmDash 的主控台傳輸管道也算作其中之一。

設定項目

Queue & history 分頁用於設定郵件可在佇列中等待多久(預設情況下,登入郵件為 15 分鐘,其他郵件為 24 小時)、是否保留郵件內容,以及歷史與紀錄的保留時長(預設 30 天)。

完整文件:https://git.devbit.me/devbit.me/emdash-plugin-apimail

常見問題

我需要 SMTP 伺服器嗎?

不需要。Mail API 透過 HTTPS 呼叫服務供應商的 HTTP API,因此在無法使用 SMTP 的環境(例如 Cloudflare Workers)中同樣可用。

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。其他任何內容都不會離開網站。

公開路由

有一個路由是公開的:GET /_emdash/api/plugins/apimail/logo?p=。它提供外掛程式內建的服務供應商標誌,不讀取任何資料。

後台

後台頁面使用私有路由:在外掛程式執行之前,EmDash 要求使用者已登入、有權管理外掛程式,並帶有 CSRF 標頭。

更新日誌

0.3.1

  • 每列顯示三張服務供應商卡片,而不是兩張:桌面版的清單更緊湊。
  • 每張服務供應商卡片上新增 Website 連結,在新分頁中開啟。
  • Set as default 改為 Activate,短到足以放進手機上的卡片。
  • 服務供應商頁面會立即根據已儲存的資料開啟,並顯示資料的時效。只有在儲存金鑰或點擊 **Refresh from ** 時才會呼叫服務供應商,並會提示該次呼叫耗時多久。

0.3.0

  • 每個已設定服務供應商的卡片上新增 Set as default 按鈕。
  • 讀取已驗證寄件者或帳號狀態失敗時,會寫入紀錄,並在下次載入頁面時重試,除非該金鑰缺少相應權限。
  • 寄件者清單會顯示其讀取時間,發生錯誤後也一樣。
  • 後台頁面適配手機:每列兩張服務供應商卡片,最多三張統計卡片,較長的值獨佔一行,歷史欄位更少。
  • 更短的選單項目:History、Queue、Logs。
  • 標籤、紀錄、錯誤與測試郵件主旨中使用一般連字號,而不是長破折號。
  • 套件更小:服務供應商標誌改用無損 WebP 圖塊。
  • 註冊表列表:新增說明、安裝、常見問題、更新日誌與安全性分頁,以及橫幅。

0.2.0

  • 從服務供應商處選擇已驗證的寄件者:已驗證的位址、已驗證網域下的任何位址,或手動輸入。位於 Sender 分頁與每個測試表單中。
  • 每個服務供應商頁面上顯示帳號狀態:方案、額度、配額與信譽。
  • 測試不再需要預先設定寄件者,Use as the default sender 會保留寄送成功的那個寄件者。
  • 已儲存的金鑰會顯示其最後 5 個字元。
  • 新增德文後台。