Skip to content

inboundemail/inbound

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“¬ Inbound - Email Infrastructure Made Simple

Frame 2

Stop juggling email providers. Start building.

Inbound gives you programmable email addresses that automatically process incoming messages and trigger webhooks in your app. Think of it as email infrastructure that actually works the way you'd want it to.

Vercel OSS Program

What does it do?

πŸ“¨ Send & Receive Emails Programmatically

Sending Emails

import { Inbound } from '@inboundemail/sdk'

const inbound = new Inbound(process.env.INBOUND_API_KEY!)

const email = await inbound.emails.send({
  from: 'Inbound User <[email protected]>',
  to: '[email protected]',
  subject: 'Welcome!',
  html: '<p>Thanks for signing up!</p>',
  tags: [{ name: 'campaign', value: 'welcome' }]
})

console.log(`Email sent: ${email.id}`)

Receiving & Replying to Emails

import { Inbound, type InboundWebhookPayload, isInboundWebhook } from '@inboundemail/sdk'
import { NextRequest, NextResponse } from 'next/server'

const inbound = new Inbound(process.env.INBOUND_API_KEY!)

export async function POST(request: NextRequest) {
  try {
    const payload: InboundWebhookPayload = await request.json()
    
    // Verify this is a valid Inbound webhook
    if (!isInboundWebhook(payload)) {
      return NextResponse.json({ error: 'Invalid webhook' }, { status: 400 })
    }
    
    const { email } = payload
    console.log(`πŸ“§ Received email: ${email.subject} from ${email.from?.addresses?.[0]?.address}`)
    
    // Auto-reply to support emails
    if (email.subject?.toLowerCase().includes('support')) {
      await inbound.reply(email, {
        from: '[email protected]',
        text: 'Thanks for contacting support! We\'ll get back to you within 24 hours.',
        tags: [{ name: 'type', value: 'auto-reply' }]
      })
    }
    
    // Auto-reply to thank you emails
    if (email.subject?.toLowerCase().includes('thanks')) {
      await inbound.reply(email, {
        from: '[email protected]',
        html: '<p>You\'re welcome! Let us know if you need anything else.</p>'
      })
    }
    
    return NextResponse.json({ success: true })
  } catch (error) {
    console.error('Webhook error:', error)
    return NextResponse.json({ error: 'Webhook processing failed' }, { status: 500 })
  }
}

Quick Start

1. Install the SDK

npm install @inboundemail/sdk
# or
bun add @inboundemail/sdk

2. Initialize with your API key

import { Inbound } from '@inboundemail/sdk'

// Get your API key from inbound.new
const inbound = new Inbound(process.env.INBOUND_API_KEY)

3. Add a domain

const domain = await inbound.domains.create({
  domain: "yourdomain.com"
})

console.log("Domain added:", domain.domain)

4. Create an email address

const emailAddress = await inbound.emailAddresses.create({
  address: "[email protected]",
  webhookUrl: "https://yourapp.com/webhook/email"
})

console.log("Email address created:", emailAddress.address)

5. Start receiving emails

Send an email to [email protected] and watch your webhook fire with the parsed content.

Local Development

# Clone and setup
git clone https://github.com/R44VC0RP/inbound
cd inbound
bun install

# Start the dev server
bun run dev

# Test email webhooks locally (no AWS needed)
bun run inbound-webhook-test [email protected]

API Features

  • REST API with OpenAPI spec
  • Webhooks with signature verification
  • Email parsing with HTML/text extraction
  • Attachment handling with S3 storage
  • Spam filtering and security checks
  • Domain verification and DNS management
  • Usage tracking and billing integration

Contributing

We're building email infrastructure that doesn't suck. Want to help?

  1. Fork the repo
  2. Make your changes
  3. Test with bun run inbound-webhook-test
  4. Submit a pull request

Ready to ditch your email provider? Get started β†’

About

email infrastructure for agent and indie devs

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 11

Languages