# @upyo/resend

> Resend transport for Upyo email library

Latest version **0.6.0** (published 2026-09-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install @upyo/resend
pnpm add @upyo/resend
yarn add @upyo/resend
bun add @upyo/resend
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.6.0 |
| Published | 2026-09-09 |
| First published | 2025-09-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.0.0 |
| Dependencies | 0 |
| Unpacked size | 65.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| Author | Hong Minhee |
| Maintainers | hongminhee |
| Keywords | email, mail, sendmail, resend |

## Links

- npm: https://www.npmjs.com/package/@upyo/resend
- Repository: https://github.com/dahlia/upyo
- Homepage: https://upyo.org/transports/resend
- Issues: https://github.com/dahlia/upyo/issues
- Funding: https://github.com/sponsors/dahlia
- npm.io page: https://npm.io/package/@upyo/resend

## Alternatives

- [@expo/fingerprint](https://npm.io/package/@expo/fingerprint.md) — 6.2M weekly downloads
- [@azure/monitor-opentelemetry-exporter](https://npm.io/package/@azure/monitor-opentelemetry-exporter.md) — 850.0K weekly downloads
- [@azure/monitor-opentelemetry](https://npm.io/package/@azure/monitor-opentelemetry.md) — 624.0K weekly downloads
- [@posthog/ai](https://npm.io/package/@posthog/ai.md) — 423.3K weekly downloads
- [fakefilter](https://npm.io/package/fakefilter.md) — 63.9K weekly downloads

## Recent versions

- 0.6.0 (latest) — 2026-09-09
- 0.6.0-dev.368 (dev) — 2026-09-09
- 0.6.0-dev.366 — 2026-09-09
- 0.6.0-dev.363 — 2026-09-09
- 0.6.0-dev.361 — 2026-09-09
- 0.6.0-dev.359 — 2026-09-09
- 0.6.0-dev.357 — 2026-09-09
- 0.6.0-dev.356 — 2026-09-09
- 0.6.0-dev.354 — 2026-09-09
- 0.6.0-dev.353 — 2026-09-08
- 0.5.6 — 2026-09-08
- 0.6.0-dev.351 — 2026-09-08
- 0.6.0-dev.349 — 2026-09-08
- 0.6.0-dev.347 — 2026-09-08
- 0.6.0-dev.346 — 2026-09-08
- … 115 more at https://npm.io/package/@upyo/resend/versions

## README

<!-- deno-fmt-ignore-file -->

@upyo/resend
============

[![JSR][JSR badge]][JSR]
[![npm][npm badge]][npm]

[Resend] transport for the [Upyo] email library.

[JSR badge]: https://jsr.io/badges/@upyo/resend
[JSR]: https://jsr.io/@upyo/resend
[npm badge]: https://img.shields.io/npm/v/@upyo/resend?logo=npm
[npm]: https://www.npmjs.com/package/@upyo/resend
[Resend]: https://resend.com/
[Upyo]: https://upyo.org/


Features
--------

 -  Single and batch email sending via Resend's HTTP API
 -  Automatic idempotency for reliable delivery
 -  Smart batch optimization: uses batch API when possible
 -  Cross-runtime compatibility (Node.js, Deno, Bun, edge functions)
 -  Rich content support: HTML emails, attachments, custom headers
 -  Retry logic with exponential backoff
 -  Type-safe configuration with sensible defaults
 -  Comprehensive error handling


Installation
------------

~~~~ sh
npm  add       @upyo/core @upyo/resend
pnpm add       @upyo/core @upyo/resend
yarn add       @upyo/core @upyo/resend
deno add --jsr @upyo/core @upyo/resend
bun  add       @upyo/core @upyo/resend
~~~~


Usage
-----

~~~~ typescript
import { createMessage } from "@upyo/core";
import { ResendTransport } from "@upyo/resend";
import process from "node:process";

const message = createMessage({
  from: "sender@example.com",
  to: "recipient@example.net",
  subject: "Hello from Upyo!",
  content: { text: "This is a test email." },
});

const transport = new ResendTransport({
  apiKey: process.env.RESEND_API_KEY!,
});

const receipt = await transport.send(message);
if (receipt.successful) {
  console.log("Message sent with ID:", receipt.messageId);
} else {
  console.error("Send failed:", receipt.errorMessages.join(", "));
}
~~~~

### Sending Multiple Emails

~~~~ typescript
const messages = [message1, message2, message3];

for await (const receipt of transport.sendMany(messages)) {
  if (receipt.successful) {
    console.log(`Email sent with ID: ${receipt.messageId}`);
  } else {
    console.error(`Email failed: ${receipt.errorMessages.join(", ")}`);
  }
}
~~~~


Configuration
-------------

See the [Resend docs] for more information about configuration options.

[Resend docs]: https://resend.com/docs

### Available Options

 -  `apiKey`: Your Resend API key
 -  `baseUrl`: Resend API base URL (default: `https://api.resend.com`)
 -  `timeout`: Request timeout in milliseconds (default: `30000`)
 -  `retries`: Number of retry attempts (default: `3`)
 -  `validateSsl`: Whether to validate SSL certificates (default: `true`)
 -  `headers`: Additional HTTP headers

---
_Source: https://npm.io/package/@upyo/resend · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
