Upyo 0.2.0 發布說明

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

我們很高興宣布 Upyo 0.2.0 的發布。Upyo 是一個跨執行環境的電子郵件函式庫,為 Node.js、Deno、Bun 和邊緣函數提供統一且類型安全的 API 來發送電子郵件。透過支援多種電子郵件提供商的可互換傳輸方式—包括 SMTPMailgunSendGrid,以及現在的 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 儲存庫。我們也歡迎關於新傳輸實現、文檔改進以及不同執行環境整合體驗的討論。

4

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/019816e1-2062-7866-a3cb-8b1eda2e6822 on your instance and reply to it.