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.