mailage
v0.0.1
Published
Unified email transport for SendGrid, Resend, Mailgun, Postmark, and Amazon SES
Downloads
29
Maintainers
Readme
📬 Mailage
Mailage is a lightweight email abstraction library that provides a unified interface for sending emails using multiple providers:
- SendGrid
- Resend
- Mailgun
- Postmark
- Amazon SES
It is designed to be simple, provider-agnostic, and usable in both TypeScript and JavaScript.
✨ Features
- Unified API for multiple email services
- Supports text, HTML, and attachments
- Works with modern
fetch(Node.js 18+ or polyfilled) - Minimal dependencies
- Easy to extend with new providers
📦 Installation
npm install mail-api⚠️ Node.js v18+ is recommended because fetch is required. For older versions, install
node-fetch.
🚀 Quick Example (JavaScript)
import { Transport, SendGrid } from "mailage"
(async function(){
const mail = new Transport(
new SendGrid({
apiKey: "SG_xxx",
sender: "[email protected]"
})
)
mail.send({
to: "[email protected]",
subject: "Hello from Mailage",
text: "Hello"
})
})();🔌 Providers
SendGrid
new SendGrid({
apiKey: "SG_xxxxx",
sender: "[email protected]",
sandbox: false
})Resend
new Resend({
apiKey: "re_xxxxx",
sender: "[email protected]"
})MailGun
new MailGun({
apiKey: "key-xxxxx",
domain: "mg.example.com",
sender: "Mailgun <[email protected]>"
})Postmark
new Postmark({
apiKey: "POSTMARK_API_KEY",
sender: "[email protected]"
})Amazon SES (Raw Email)
new AmazonSES({
accessKeyId: "AKIA...",
secretAccessKey: "SECRET",
region: "us-east-1",
sender: "[email protected]"
})📎 Attachments (All Providers)
{
attachments: [
{
filename: "invoice.pdf",
content: fs.readFileSync("invoice.pdf"),
contentType: "application/pdf"
}
]
}⚠️ Notes & Best Practices
- Always verify sender domains (SendGrid, SES, Mailgun)
- SES requires sandbox removal to send to unverified emails
- Use environment variables for API keys
- Ensure
fetchexists (Node 18+)
