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 仓库。我们也欢迎关于新传输实现、文档改进以及不同运行时环境集成体验的讨论。