# How to send email from your app.

URL: https://antideploy.com/blog/how-to-send-email-from-your-app

Ask your agent to switch on email. Your app sends with the Resend package as usual, with no account to open and no domain to verify.

## At a glance

- **The Resend package**: Node and Python, as written for Resend
- **No DNS**: Mail leaves from Antideploy's own domain
- **Delivery tracking**: Delivered, bounced, marked as spam
- **Transactional only**: Not for newsletters

Published 7 October 2026. Facts checked 7 October 2026. 3 min read.

## The short answer

To send email from your app, tell your connected coding agent to switch on email. Your app then sends with the Resend package exactly as it would anywhere. There is no Resend account to open, no domain to verify and no DNS record to add. Email is for your app's own users: a welcome, a password reset, a receipt, a contact form. It is not for newsletters or bulk mail.

> **Say this to your coding agent**
>
> Let this app send email, for example a welcome message when someone signs up.

If your agent is not connected yet, paste this first: Set this project up to deploy on Antideploy. Fetch https://antideploy.com/agent.md and follow it.

## What your agent does

### 1. It switches email on before it writes the message

So the message is written and sent against the real thing. The variables go into your `.env` through a redirect that never prints the token that lets your app send.

### 2. The deploy gives the running app the same variables

These are `RESEND_API_KEY`, `RESEND_BASE_URL`, `RESEND_API_URL` and `EMAIL_FROM`. Do not copy them into your secrets.

## How your code sends

The Resend packages read `RESEND_BASE_URL` in Node and `RESEND_API_URL` in Python. Both point at Antideploy's relay, so nothing else is configured.

**Node**

```
import { Resend } from "resend";

const resend = new Resend(process.env.RESEND_API_KEY);
await resend.emails.send({
  from: process.env.EMAIL_FROM,
  to: "maya@example.com",
  subject: "Welcome to Verdant",
  html: "<p>Glad you are here.</p>",
  replyTo: "hello@verdant.in",
});

# Python
import os, resend

resend.api_key = os.environ["RESEND_API_KEY"]
resend.Emails.send({
    "from": os.environ["EMAIL_FROM"],
    "to": ["maya@example.com"],
    "subject": "Welcome to Verdant",
    "html": "<p>Glad you are here.</p>",
    "reply_to": "hello@verdant.in",
})
```

## What the relay allows

- The message always leaves from your application's own address under Antideploy's sending domain, with your application's name as the display name, whatever your `from` says
- Replies do not come back to that address, so set a reply-to address that you read
- At most five addresses on one message, and one message at a time
- No attachments, scheduling, templates or batch sending
- Ten messages a minute for one application

## How many you can send

By plan, per application, in any 24 hours: 20 addresses on Free, 100 on Go, 500 on Pro and 2,000 on Scale. An account less than 7 days old can send to 10 addresses a day whatever it pays. Over a limit the answer is a 429 with Resend's own error name, `daily_quota_exceeded` or `rate_limit_exceeded`. Show a person a message to try later, and do not retry in a loop.

## What is checked

Every app shares one sending domain, so one app mailing addresses that do not exist would cost the others their place in the inbox. An app whose mail bounces or draws spam reports is paused automatically and its owner is emailed. No subject, body or address is kept.

## Here's where it stops.

A platform that only tells you what it is good at is one you find the edges of in production. These are the ones to know before your first deploy.

### Postgres only

Antideploy creates Postgres databases. Redis, MySQL and MongoDB are not provided today, so an app that needs one brings its own.

## Email questions, answered.

Anything else? Write to us and a person answers.

[support@antideploy.com](mailto:support@antideploy.com)

### Can I send from my own domain?

Not today. Sending from your own domain would need your DNS records, so it is not offered.

### Can I send newsletters?

No. It is transactional mail for your app's own users. It is never for bulk mail.

### How do I see whether an email arrived?

The console has an Email section with Overview, Activity and Deliverability tabs. Your agent can read the same things, so "did my email go out" is answered from facts.

### Why was my app's email paused?

Because its mail bounced or drew spam reports: at least 3 addresses bouncing that are a fifth or more of the last day's mail, or 2 spam reports in a week. You are emailed, and you reply to that notice.

### Does email cost extra?

No. It is in every plan, and it does not use a database or bucket from your allowance.

## More guides, and the platform.

Each platform page covers one part of Antideploy: what it does, where it stops and the questions people ask. [See the whole platform](https://antideploy.com/platform), or [all the guides](https://antideploy.com/blog).

- [How to add login to your app](https://antideploy.com/blog/how-to-add-login-to-your-app): Email and password sign-in, with users stored in your own Postgres. What is on and what is not.
- [How to set environment variables and secrets](https://antideploy.com/blog/how-to-set-environment-variables-and-secrets): Encrypted and write-only. What you set, what is filled in for you, and how a change reaches the app.
- [How to add a Postgres database to your app](https://antideploy.com/blog/how-to-add-a-postgres-database-to-your-app): Ask your agent. A Postgres 17 database is created beside your app and DATABASE_URL is set.

- [Email](https://antideploy.com/platform/email)
- [Environment variables](https://antideploy.com/platform/environment-variables)
- [Authentication](https://antideploy.com/platform/authentication)
- [Agent API](https://antideploy.com/platform/agent-api)

Facts on this page were checked against the live platform on 7 October 2026.

## Deploy something. Start with one sentence.

Paste one sentence into your coding agent, click Approve once, and get a live link. No card, no trial clock.

To set this up, give your coding agent this sentence:

```text
Set this project up to deploy on Antideploy. Fetch https://antideploy.com/agent.md and follow it.
```
