stop messing with multiple providers and ancient sdks inbound is the easiest way to send, receive, and reply to emails in your app
npm i @inboundemail/sdk
trusted by builders at:
you've been there. spending days configuring SMTP, parsing raw email headers, dealing with bounces...
// You can't even get webhooks from existing providers 😢
const nodemailer = require('nodemailer')
const transporter = nodemailer.createTransporter({
host: 'smtp.gmail.com',
port: 587,
secure: false,
auth: { user: process.env.EMAIL, pass: process.env.PASSWORD },
tls: { rejectUnauthorized: false }
})
// No webhook support - you're on your own
app.post('/webhook', (req, res) => {
const rawEmail = req.body
// Now what? Parse headers? Handle attachments?
// Good luck with that...
})
what if sending and receiving emails was as simple as making an API call?
// With Inbound ✨
import { Inbound } from '@inboundemail/sdk'
const inbound = new Inbound(process.env.INBOUND_API_KEY!)
// Send email (Resend-compatible)
await inbound.emails.send({
from: 'hello@yourdomain.com',
to: 'user@example.com',
subject: 'Welcome!',
html: '<p>Thanks for signing up!</p>'
})
// That's it. No SMTP. No config. Just works.
build AI agents that actually respond to emails. no more manual parsing or threading nightmares.
const inbound = new Inbound(process.env.INBOUND_API_KEY!)
export async function POST(request: NextRequest) {
try {
const payload: InboundWebhookPayload = await request.json()
const { email } = payload
const { text } = await generateText({
model: openai("o3-mini"),
prompt: """
You are a custom support agent for
a company called "Inbound"
The email is: ${email.subject}
The email body is: ${email.html}
"""
})
await inbound.reply(email, {
from: 'support@yourdomain.com',
text: text,
tags: [{ name: 'type', value: 'auto-reply' }]
})
return NextResponse.json({ success: true })
}
}
• Googling "how to send email in Node.js" for the 17th time
• Wrestling with nodemailer configuration that breaks in production
• Manually parsing email headers like it's 1995
• Building your own webhook endpoint and hoping it works
• Spending more time on email than your actual product
• inbound to the rescue
// Install once
npm install @inboundemail/sdk
// Send emails forever ♾️
await inbound.emails.send(emailData)
// That's it. Seriously.
The simplest way to handle email in your applications. Send, receive, and reply with full TypeScript support.
await inbound.emails.send({
from: 'hello@yourdomain.com',
to: 'user@example.com',
subject: 'Welcome!',
html: '<h1>Thanks for signing up!</h1>'
})
export async function POST(req: Request) {
const { email } = await req.json()
// Email parsed & ready to use
console.log(email.subject, email.html)
return Response.json({ success: true })
}
await inbound.reply(email, {
from: 'support@yourdomain.com',
text: 'Thanks for your message!',
tags: [{ name: 'type', value: 'auto-reply' }]
})
Stop wasting time on email infrastructure. Start building features that matter.