Upyo 0.2.0 發布說明

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
我們很高興宣布 Upyo 0.2.0 的發布。Upyo 是一個跨執行環境的電子郵件函式庫,為 Node.js、Deno、Bun 和邊緣函數提供統一且類型安全的 API 來發送電子郵件。透過支援多種電子郵件提供商的可互換傳輸方式—包括 SMTP、Mailgun、SendGrid,以及現在的 Amazon SES—Upyo 使您能夠在不更改程式碼的情況下無縫切換電子郵件服務。
此版本引入了兩個重要的新增功能:Amazon SES 傳輸支援和全面的 OpenTelemetry 整合。這些功能擴展了傳輸選項,並為函式庫添加了生產就緒的可觀測性功能。
Amazon SES 傳輸
Upyo 現在透過新的 @upyo/ses 套件支援 Amazon SES。這個傳輸方式提供 AWS Signature v4 認證,且零外部依賴,保持了 Upyo 對跨執行環境兼容性的承諾。此實現支援 AWS 存取金鑰憑證和基於會話的臨時憑證認證。
import { SesTransport } from "@upyo/ses";
import { createMessage } from "@upyo/core";
const transport = new SesTransport({
authentication: {
type: "credentials",
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
},
region: "us-east-1",
});
const receipt = await transport.send(createMessage({
from: "sender@example.com",
to: "recipient@example.com",
subject: "Hello from SES",
content: { text: "Sent via Amazon SES!" },
}));
SES 傳輸包含區域配置支援、透過外部憑證提供者的全面 IAM 角色整合,以及高效的批量發送功能。與其他 Upyo 傳輸一樣,它提供相同的一致介面,同時利用 Amazon 經過驗證的電子郵件基礎設施,確保大規模可靠交付。
配置集、訊息標記和豐富內容功能都得到完全支援,讓團隊能夠利用 SES 的進階追蹤和分析功能。該傳輸方式處理 AWS 認證複雜性,同時維持 Upyo 用戶期望的簡單、統一 API。
OpenTelemetry 整合
新的 @upyo/opentelemetry 套件透過裝飾器模式為任何 Upyo 傳輸添加全面的可觀測性支援。這個實現提供分散式追蹤、指標收集和智能錯誤分類,無需更改現有的電子郵件發送程式碼。
import { createOpenTelemetryTransport } from "@upyo/opentelemetry";
import { SmtpTransport } from "@upyo/smtp";
// 為任何現有傳輸添加可觀測性
const transport = createOpenTelemetryTransport(
new SmtpTransport({ host: "smtp.example.com" }),
{
serviceName: "email-service",
metrics: { enabled: true },
tracing: { enabled: true },
}
);
// 使用方式與之前完全相同 - 可觀測性是自動的
await transport.send(message);
OpenTelemetry 傳輸自動為電子郵件操作添加追蹤和指標,追蹤傳遞率、延遲分佈,並按類型分類失敗。它與現有的 OpenTelemetry 基礎設施無縫整合,支援全局提供者和針對不同部署場景的自定義配置。
性能優化功能包括可配置的追蹤和指標採樣率,確保在高吞吐量環境中的最小開銷。該傳輸透過 Disposable
/AsyncDisposable
支援提供自動資源管理,並包含針對批量電子郵件操作的專門監控功能,使其適用於任何規模的生產工作負載。
參與其中
我們持續努力改進 Upyo,並希望聽取社群的意見。無論您是嘗試新的 Amazon SES 傳輸、使用 OpenTelemetry 實現可觀測性,還是使用我們任何現有的傳輸,您的反饋都有助於塑造函式庫的未來。
如果您遇到問題、有功能請求或想要貢獻,請訪問我們的 GitHub 儲存庫。我們也歡迎關於新傳輸實現、文檔改進以及不同執行環境整合體驗的討論。