For AI-generated websites

AI built your site. We handle the email.

Paste one URL into your HTML form's action= and contact submissions land in your own inbox. No backend. No SDK. No extra email service.

Start free Read the docs
Free · 10k sends/mo
No backend required
Your own inbox
send-welcome.ts POST /v1/messages
import { js2mail } from "js2mail"
// connect once, send through any mailbox
await js2mail.send({
  from: "[email protected]",
  subject: "Welcome to Acme",
  provider: "auto", // gmail | ms | smtp
  html: template("welcome", user),
})
Delivery live
G
delivered
218ms
M
delivered
342ms
S
3 of 12,847 today 99.97% ↑
Connects to
G
Gmail
M
Microsoft 365
S
Exchange / On-prem
S
Custom SMTP
G
Google Workspace
Works with
Lovable v0 Bolt Cursor Replit Webflow Framer Windsurf Claude Code Codex and any AI tool that outputs HTML
Contact forms

Your AI-generated site can finally receive messages.

Your AI generates the HTML — we never touch it. Change one attribute, submissions land in your own inbox as real email threads you can reply to.

Your HTML stays untouched. Tailwind, Bootstrap, plain CSS — we only read the action= URL.
Your own inbox. Mail comes from your connected Gmail or Outlook — not a third-party sender. Reply in-thread normally.
Create a form free
contact.html paste & go
<form action="https://api.js2mail.dev/f/aB3xKp9R"
      method="POST" class="your-tailwind-classes">
  <input name="name" placeholder="Your name" required>
  <input name="email" type="email" required>
  <textarea name="message"></textarea>
  <button>Send</button>
</form>
// The submission arrives in your inbox as:
// From: [email protected] (your own mailbox)
// Subject: New contact — Jane ([email protected])
// Body: Name: Jane / Email: ... / Message: ...
How it works

Up and running in under two minutes.

01
Connect your mailbox
Sign in with Gmail or Microsoft 365 — one click, done. Or bring any SMTP host. Takes 60 seconds.
02
Paste one URL
Copy your form endpoint URL. Paste it into your HTML form's action= attribute. Nothing else changes.
03
Get real email
Every submission lands in your inbox as a normal email thread. Reply directly to your visitor.
What happens next

Someone fills your form. You get an email.

That's it. No webhook to configure. No dashboard to check first. The email just arrives.

Your contact form
Name
Email
Message
js2mail
G
contact@acme.com 1 new
Weekly update
Here's what happened this week…
Invoice #1042
Your invoice is attached.
New message from Jane
just now
Hi, I'd like to learn more about your pricing…
Dashboard

See every message, the moment it arrives.

Know who submitted, when it was delivered, and why one didn't make it — all in one place, without digging through logs.

app.js2mail.dev/Dashboard
JS2Mail
Overview
Forms
Logs
Connections
contact@acme.com
Overview
Sent today
1,247
↑ 12% vs yesterday
Delivery rate
99.3%
last 30 days
Active forms
8
3 endpoints live
Mailboxes
3
all connected
Recent activity
Contact from Jane [email protected]
Sent 2m ago
Demo request · Mark [email protected]
Sent 14m ago
Enterprise inquiry [email protected]
Failed 1h ago
Contact from Alex [email protected]
Sent 3h ago
JS2Mail
Overview
Forms
Logs
Connections
contact@acme.com
Form endpoints + New
Contact form api.js2mail.dev/f/aB3xKp9R
Gmail · contact@acme.com
Contact from Jane to [email protected]
Sent 2m ago
Demo request · Mark to [email protected]
Sent 14m ago
Enterprise inquiry to [email protected]
Failed 1h ago
Contact from Alex to [email protected]
Sent 3h ago
Partnership request to [email protected]
Sent 5h ago
142 total submissions this month  ·  99.3% delivered
JS2Mail
Overview
Forms
Logs
Connections
contact@acme.com
Delivery logs Filter ▾
Time
Recipient / Subject
Provider
Status
ms
Today 14:32
Contact from Jane
Gmail
Sent
218
Today 14:18
Demo request · Mark
Gmail
Sent
241
Today 13:05
Enterprise inquiry
M365
Failed
Today 11:47
Contact from Alex
SMTP
Sent
312
Today 09:22
Partnership request
Gmail
Sent
198
JS2Mail
Overview
Forms
Logs
Connections
contact@acme.com
Connected mailboxes + Connect
Gmail  ·  1,247 sent
Connected
2 min ago
Microsoft 365  ·  892 sent
Connected
18 min ago
Custom SMTP  ·  308 sent
Connected
4h ago
Live demo

Send a real email.
Right now.

Fill the form and hit Send — a real email lands in your inbox in seconds.

The form on the right is built with exactly the code below.

No JavaScript, no SDK, no backend server. One action= attribute on a plain HTML form — that's the only change needed to turn a static page into a working contact form that delivers real email to your inbox.

No JS2Mail account needed to try — just fill the form and see it work.
On your own site, connect your mailbox once — submissions arrive as real email threads you can reply to.
Your name
Your email *
Message (optional)
Limited to 1 demo per 5 minutes per IP. No data stored.
contact.html 14 lines. Zero backend.
<form action="https://api.js2mail.dev/f/XXX"
      method="POST">
  <label>Your name
    <input name="name" placeholder="Jane Doe" required>
  </label>
  <label>Your email
    <input name="email" type="email" placeholder="[email protected]" required>
  </label>
  <label>Message (optional)
    <textarea name="message" placeholder="Say something…"></textarea>
  </label>
  <!-- honeypot — bots fill it, humans don't -->
  <input name="_honey" style="display:none" tabindex="-1" autocomplete="off">
  <button type="submit">Send demo email</button>
</form>
This is the complete integration. No SDK, no backend, no framework. Change the action= URL and you're done.
Deliverability

Your mailbox. Your reputation.
No shared IP pool, no blacklist risk.

Every email JS2Mail dispatches goes out through your connected mailbox — Gmail, Microsoft 365, or your SMTP server. Receivers see your domain, your DKIM signature, your SPF record. Not ours.

No shared IP reputation. You're not on a pool with thousands of other senders. Your deliverability is yours to own — or lose.
Your DKIM/SPF/DMARC signs every send. Because the mail leaves your mailbox, every authentication record points back to your domain. Inbox providers trust it.
Threads stay in your inbox. Replies come back to you directly. Labels, folders, filters — your normal email workflow, not a third-party dashboard.
No vendor blacklist bleed. One bad actor on a shared provider can delist everyone. With JS2Mail, your reputation is isolated from every other customer.
Shared-IP provider (typical)
Sent from [email protected]
Shared IP pool — one bad sender hurts everyone
Replies go to provider dashboard, not your inbox
JS2Mail
Sent from [email protected]
Isolated reputation — your sends, your score
Replies land in your inbox as normal threads
Get started

10,000 sends free. No credit card.

Connect your mailbox in 60 seconds. Drop one URL into your form. Start delivering.

Start free Read the docs