PageSourceSearch

https://learn.emailengine.app/assets/js/c377a04b.d671b3a1.js

js emailengine.app collected 2026-09-25 20:14:14 UTC 31,072 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkemailengine_temp=globalThis.webpackChunkemailengine_temp||[]).push([[3361],{868(e,i,n){n.d(i,{A:()=>I});var s=n(96540),a=n(70679),l=n(74848);const t=(0,a.Wf)("psysRegion");let r=null,o=!1;const d=new Set;function c(e){const i=function(e){const i="eur"===e?.currency?"eur":"usd",n=e?.formatted?.[i];return"string"==typeof n&&n?n:null}(e);i!==r&&(r=i,d.forEach(e=>e()))}function h(e){return d.add(e),function(){if(o)return;o=!0;try{const e=JSON.parse(t.get()??"null");e&&Date.now()-e.ts<6048e5&&c(e.data)}catch{}const e=document.createElement("script");e.src="https://postalsys.com/region.js",e.onload=()=>{const e=window.PSYS_REGION;e&&(c(e),t.set(JSON.stringify({ts:Date.now(),data:e})))},document.head.appendChild(e)}(),()=>{d.delete(e)}}const g=()=>r,m=()=>null;function I(){const e=(0,s.useSyncExternalStore)(h,g,m);return e?(0,l.jsx)(l.Fragment,{children:` (${e} per year)`}):null}},12939(e,i,n){n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>o,default:()=>g,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"index","title":"EmailEngine - Self-Hosted Email API for Developers","description":"Build email features into your app with EmailEngine\'s unified REST API. Self-hosted email gateway supporting IMAP, SMTP, Gmail API, and Microsoft Graph. Flat pricing, no per-mailbox fees.","source":"@site/docs/index.md","sourceDirName":".","slug":"/","permalink":"/docs/","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":0,"frontMatter":{"title":"EmailEngine - Self-Hosted Email API for Developers","sidebar_label":"Self-Hosted Email API for Developers","sidebar_position":0,"description":"Build email features into your app with EmailEngine\'s unified REST API. Self-hosted email gateway supporting IMAP, SMTP, Gmail API, and Microsoft Graph. Flat pricing, no per-mailbox fees.","slug":"/","keywords":["email API","IMAP API","SMTP API","self-hosted email","email integration","email gateway","REST API email","Gmail API alternative","Nylas alternative"]},"sidebar":"docsSidebar","next":{"title":"What is EmailEngine? | Email API Introduction","permalink":"/docs/getting-started/introduction"}}');var a=n(74848),l=n(28453),t=n(868);const r={title:"EmailEngine - Self-Hosted Email API for Developers",sidebar_label:"Self-Hosted Email API for Developers",sidebar_position:0,description:"Build email features into your app with EmailEngine's unified REST API. Self-hosted email gateway supporting IMAP, SMTP, Gmail API, and Microsoft Graph. Flat pricing, no per-mailbox fees.",slug:"/",keywords:["email API","IMAP API","SMTP API","self-hosted email","email integration","email gateway","REST API email","Gmail API alternative","Nylas alternative"]},o="Self-Hosted Email API for Developers",d={},c=[{value:"What Can You Do With EmailEngine?",id:"what-can-you-do-with-emailengine",level:2},{value:"Send Emails",id:"send-emails",level:3},{value:"Receive Emails in Real-Time",id:"receive-emails-in-real-time",level:3},{value:"Manage Email Accounts",id:"manage-email-accounts",level:3},{value:"Search and Organize",id:"search-and-organize",level:3},{value:"Connect AI Agents",id:"connect-ai-agents",level:3},{value:"Why EmailEngine?",id:"why-emailengine",level:2},{value:"One API for All Providers",id:"one-api-for-all-providers",level:3},{value:"Built for SaaS Applications",id:"built-for-saas-applications",level:3},{value:"Running It Yourself",id:"running-it-yourself",level:3},{value:"Quick Start",id:"quick-start",level:2},{value:"Common Use Cases",id:"common-use-cases",level:2},{value:"Email-Integrated SaaS",id:"email-integrated-saas",level:3},{value:"Email Automation",id:"email-automation",level:3},{value:"Customer Support",id:"customer-support",level:3},{value:"Email Analytics",id:"email-analytics",level:3},{value:"Architecture Overview",id:"architecture-overview",level:2},{value:"API Reference",id:"api-reference",level:2},{value:"Get Help",id:"get-help",level:2},{value:"System Requirements",id:"system-requirements",level:2},{value:"License",id:"license",level:2},{value:"Next Steps",id:"next-steps",level:2},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"What is EmailEngine?",id:"what-is-emailengine",level:3}
1,{value:"How is EmailEngine different from Nylas?",id:"how-is-emailengine-different-from-nylas",level:3},{value:"What email providers does EmailEngine support?",id:"what-email-providers-does-emailengine-support",level:3},{value:"Is EmailEngine free?",id:"is-emailengine-free",level:3},{value:"Can I use EmailEngine to send emails?",id:"can-i-use-emailengine-to-send-emails",level:3},{value:"Can AI agents use EmailEngine?",id:"can-ai-agents-use-emailengine",level:3},{value:"Where is my email data stored?",id:"where-is-my-email-data-stored",level:3},{value:"See Also",id:"see-also",level:2}];function h(e){const i={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.header,{children:(0,a.jsx)(i.h1,{id:"self-hosted-email-api-for-developers",children:"Self-Hosted Email API for Developers"})}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.strong,{children:"EmailEngine"})," is a self-hosted email API that lets you add email functionality to any application. Access Gmail, Outlook, and any IMAP mailbox through a single REST API. Unlike per-mailbox services like Nylas, EmailEngine uses flat annual pricing",(0,a.jsx)(t.A,{})," - connect unlimited accounts for one predictable cost."]}),"\n",(0,a.jsx)(i.h2,{id:"what-can-you-do-with-emailengine",children:"What Can You Do With EmailEngine?"}),"\n",(0,a.jsx)(i.h3,{id:"send-emails",children:"Send Emails"}),"\n",(0,a.jsx)(i.p,{children:"Send emails through any email provider with a single API endpoint. EmailEngine handles SMTP connections, OAuth2 authentication, retries, and delivery tracking."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:'curl -X POST "https://emailengine.example.com/v1/account/user123/submit" \\\n  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \\\n  -H "Content-Type: application/json" \\\n  -d \'{\n    "to": [{ "address": "[email protected]" }],\n    "subject": "Hello from EmailEngine",\n    "html": "<p>Your message here</p>"\n  }\'\n'})}),"\n",(0,a.jsx)(i.h3,{id:"receive-emails-in-real-time",children:"Receive Emails in Real-Time"}),"\n",(0,a.jsx)(i.p,{children:"Get instant webhook notifications when new emails arrive, no polling required."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-json",children:'{\n  "account": "user123",\n  "path": "INBOX",\n  "event": "messageNew",\n  "data": {\n    "id": "AAAAAQAACnA",\n    "uid": 1838,\n    "unseen": true,\n    "subject": "Re: Meeting tomorrow",\n    "from": { "name": "Ann Client", "address": "[email protected]" },\n    "messageId": "<[email protected]>"\n  }\n}\n'})}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.a,{href:"/docs/webhooks/messagenew",children:"The full payload"})," carries the envelope, the headers, the attachment list, and a reference for fetching the body."]}),"\n",(0,a.jsx)(i.h3,{id:"manage-email-accounts",children:"Manage Email Accounts"}),"\n",(0,a.jsx)(i.p,{children:"Register and manage multiple email accounts with automatic connection handling."}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:'curl -X POST "https://emailengine.example.com/v1/account" \\\n  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \\\n  -H "Content-Type: application/json" \\\n  -d \'{\n    "account": "user123",\n    "name": "User 123",\n    "email": "[email protected]",\n    "oauth2": {\n      "provider": "AAABlf_0iLgAAAAQ",\n      "refreshToken": "1//0gExampleRefreshTokenFromGoogle",\n      "auth": { "user": "[email protected]" }\n    }\n  }\'\n'})}),"\n",(0,a.jsxs)(i.p,{children:[(0,a.jsx)(i.code,{children:"provider"})," is the ID of an ",(0,a.jsx)(i.a,{href:"/docs/accounts/oauth2-setup",children:"OAuth2 application"})," registered in EmailEngine, and ",(0,a.jsx)(i.code,{children:"refreshToken"})," comes from that application's authorization flow. EmailEngine can also ",(0,a.jsx)(i.a,{href:"/docs/accounts/hosted-authentication",children:"run the flow for you"}),", in which case neither value is yours to supply."]}),"\n",(0,a.jsx)(i.h3,{id:"search-and-organize",children:"Search and Organize"}),"\n",(0,a.jsx)(i.p,{children:"Search messages, organize mailboxes, manage flags, and download attachments."}),"\n",(0,a.jsx)(i.h3,{id:"connect-ai-agents",children:"Connect AI Agents"}),"\n",(0,a.jsxs)(i.p,{children:["Expose the connected mailboxes to AI agents over the ",(0,a.jsx)(i.a,{href:"/docs/mcp",children:"Model Context Protocol"}
1),". Point an MCP client at ",(0,a.jsx)(i.code,{children:"/mcp"}),", hand it a narrowed access token, and it can search, read, file, draft and send mail without ever holding a mailbox credential."]}),"\n",(0,a.jsx)(i.pre,{children:(0,a.jsx)(i.code,{className:"language-bash",children:'# Register EmailEngine as an MCP server in Claude Code\nclaude mcp add --transport http emailengine https://emailengine.example.com/mcp \\\n  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"\n'})}),"\n",(0,a.jsx)(i.h2,{id:"why-emailengine",children:"Why EmailEngine?"}),"\n",(0,a.jsx)(i.h3,{id:"one-api-for-all-providers",children:"One API for All Providers"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"IMAP/SMTP"})," - Works with any email provider"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Gmail API"})," - Native Gmail integration with Cloud Pub/Sub"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Microsoft Graph API"})," - Native Microsoft 365 and Outlook integration"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Consistent interface"})," across all provider types"]}),"\n"]}),"\n",(0,a.jsx)(i.h3,{id:"built-for-saas-applications",children:"Built for SaaS Applications"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Multi-account"})," - Manage thousands of email accounts"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"OAuth2 support"})," - Built-in OAuth2 for Gmail, Google Workspace, Microsoft 365"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Webhooks"})," - Real-time notifications for all email events"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Queue management"})," - Automatic retries and delivery tracking"]}),"\n"]}),"\n",(0,a.jsx)(i.h3,{id:"running-it-yourself",children:"Running It Yourself"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Self-hosted"})," - The mail and the credentials stay on your infrastructure"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Tunable"})," - Worker counts, connection limits, and Redis sit under your control"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Self-healing"})," - Dropped connections are re-established with backoff and failed deliveries retried"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Persistent"})," - One IMAP connection per account stays open, so reads do not pay for a login on every request"]}),"\n"]}),"\n",(0,a.jsx)(i.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,a.jsx)(i.p,{children:"Four steps from an empty install to a message in your webhook endpoint:"}),"\n",(0,a.jsxs)(i.ol,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/installation",children:"Install EmailEngine"})})," - Set up with Docker, npm, or on platforms like Render.com"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/getting-started/quick-start",children:"Add Your First Account"})})," - Register an email account via API"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/sending/basic-sending",children:"Send an Email"})})," - Submit your first message"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/webhooks/overview",children:"Receive Webhooks"})})," - Get notified of new emails"]}),"\n"]}),"\n",(0,a.jsx)(i.h2,{id:"common-use-cases",children:"Common Use Cases"}),"\n",(0,a.jsx)(i.h3,{id:"email-integrated-saas",children:"Email-Integrated SaaS"}),"\n",(0,a.jsx)(i.p,{children:"Build email functionality into your SaaS application:"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsx)(i.li,{children:"Send transactional emails from user accounts"}),"\n",(0,a.jsx)(i.li,{children:"Receive and process incoming emails"}),"\n",(0,a.jsx)(i.li,{children:"Integrate customer email into your CRM"}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"/docs/integrations/crm",children:"Read the CRM integration guide \u2192"})}),"\n"]}),"\n",(0,a.jsx)(i.h3,{id:"email-automation",children:"Email Automation"}),"\n",(0,a.jsx)(i.p,{children:"Automate email workflows:"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsx)(i.li,{children:"Auto-respond to incoming emails"}),"\n",(0,a.jsx)(i.li,{children:"Forward emails based on rules"}),"\n",(0,a.jsx)(i.li,{children:"Track email threads and replies"}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"/docs/sending/threading",children:"Learn about email threading \u2192"})}),"\n"]}),"\n",(0,a.jsx)(i.h3,{id:"customer-support",children:"Customer Support"}),"\n",(0,a.jsx)(i.p,{children:"Integrate email into your support system:"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsx)(i.li,{children:"Manage multiple support email accounts"}),"\n",(0,a.jsx)(i.li,{children:"Track email conversations"}),"\n",(0,a.jsx)(i.li,{children:"Send templated responses"}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"/docs/sending/mail-merge",children:"Explore mail merge \u2192"})}),"\n"]}),"\n",(0,a.jsx)(i.h3,{id:"email-analytics",children:"Email Analytics"}),"\n",(0,a.jsx)(i.p,{children:"Analyze email communications:"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsx)(i.li,{children:"Track email delivery and opens"}
1),"\n",(0,a.jsx)(i.li,{children:"Generate AI-powered email summaries"}),"\n",(0,a.jsx)(i.li,{children:"Monitor email activity across accounts"}),"\n",(0,a.jsx)(i.li,{children:(0,a.jsx)(i.a,{href:"/docs/integrations/ai-chatgpt",children:"See AI integration \u2192"})}),"\n"]}),"\n",(0,a.jsx)(i.h2,{id:"architecture-overview",children:"Architecture Overview"}),"\n",(0,a.jsx)(i.p,{children:"EmailEngine works as a middleware between your application and email providers:"}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.img,{alt:"EmailEngine Architecture",src:n(87090).A+"",width:"1100",height:"400"})}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"How it works:"})}),"\n",(0,a.jsxs)(i.ol,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Your Application"})," - Makes REST API calls to EmailEngine and receives webhook notifications"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"EmailEngine"})," - Maintains persistent connections to email providers and manages data synchronization"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Redis"})," - Stores email metadata, message queues, and account data for fast access"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Email Providers"})," - Gmail, Outlook, Microsoft 365, and any IMAP/SMTP server"]}),"\n"]}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"Data flows:"})}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"API requests"}),": Your app calls EmailEngine REST API \u2192 EmailEngine connects to email providers or retrieves from Redis"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Webhooks"}),": Email providers send updates \u2192 EmailEngine processes \u2192 Your app receives webhook notifications"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:"Data storage"}),": EmailEngine stores metadata and queues in Redis (email content is not stored, only fetched on demand)"]}),"\n"]}),"\n",(0,a.jsx)(i.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,a.jsx)(i.p,{children:"The REST API is documented in four parts, plus the generated endpoint reference:"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/api-reference",children:"API Overview"})})," - Authentication, conventions, error handling"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/api-reference/accounts-api",children:"Account Management"})})," - Register and manage accounts"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/api-reference/sending-api",children:"Sending Emails"})})," - Submit endpoint and options"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/api-reference/messages-api",children:"Message Operations"})})," - List, search, and manage emails"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/api/emailengine-api",children:"Full endpoint reference"})})," - Every endpoint with its request and response schema"]}),"\n"]}),"\n",(0,a.jsx)(i.h2,{id:"get-help",children:"Get Help"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/troubleshooting",children:"Troubleshooting Guide"})})," - Common issues and solutions"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"https://github.com/postalsys/emailengine/issues",children:"GitHub Issues"})})," - Report bugs and request features"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"/docs/support",children:"Support"})})," - Support channels and what a subscription covers"]}),"\n"]}),"\n",(0,a.jsx)(i.h2,{id:"system-requirements",children:"System Requirements"}),"\n",(0,a.jsxs)(i.p,{children:["Redis, and Node.js 20 or newer when running from source; the packaged builds carry their own runtime. ",(0,a.jsx)(i.a,{href:"/docs/installation#system-requirements",children:"Installation"})," has the memory figures and what drives them."]}),"\n",(0,a.jsx)(i.h2,{id:"license",children:"License"}),"\n",(0,a.jsx)(i.p,{children:"EmailEngine requires a license key for production use. Get a license:"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"https://postalsys.com/plans",children:"14-Day Free Trial"})})," - Full features, no credit card required"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.strong,{children:(0,a.jsx)(i.a,{href:"https://postalsys.com/plans",children:"Production License"})})," - For commercial use",(0,a.jsx)(t.A,{})]}),"\n"]}),"\n",(0,a.jsx)(i.hr,{}),"\n",(0,a.jsx)(i.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"New to EmailEngine?"})}),"\n",(0,a.jsxs)(i.ol,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/getting-started/introduction",children:"Read the introduction"})," to understand what EmailEngine can do"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/getting-started/quick-start",children:"Follow the quick start guide"})," to get your first email working"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/accounts/gmail/gmail-imap",children:"Set up OAuth2 for Gmail"})," or ",(0,a.jsx)(i.a,{href:"/docs/accounts/microsoft-365/outlook-365",children:"Outlook"})]}),"\n"]}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"Ready to build?"})}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/api-reference",children:"Explore the API reference"})," to see all available endpoints"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/mcp",children:"Connect an AI agent over MCP"})," to let assistants work with the mailboxes directly"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/integrations",children:"Check out integration examples"})," for PHP, CRM, AI, and more"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/advanced/performance-tuning",children:"Read about performance tuning"})," for production deployments"]}),"\n"]}),"\n",(0,a.jsx)(i.p,{children:(0,a.jsx)(i.strong,{children:"Need inspiration?"})}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/integrations/crm",children:"See the CRM integration guide"})," for a complete architecture example"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/integrations/ai-chatgpt",children:"Explore AI integration"})," for email summarization and automation"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/comparison/emailengine-vs-nylas",children:"Compare EmailEngine vs Nylas"})," to understand the differences"]}),"\n"]}),"\n",(0,a.jsx)(i.hr,{}),"\n",(0,a.jsx)(i.h2,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,a.jsx)(i.h3,{id:"what-is-emailengine",children:"What is EmailEngine?"}),"\n",(0,a.jsx)(i.p,{children:"EmailEngine is a self-hosted email gateway that provides a unified REST API for accessing email accounts. It supports IMAP, SMTP, Gmail API, and Microsoft Graph API, letting you build email features into your application without dealing with protocol complexity."}),"\n",(0,a.jsx)(i.h3,{id:"how-is-emailengine-different-from-nylas",children:"How is EmailEngine different from Nylas?"}),"\n",(0,a.jsxs)(i.p,{children:["EmailEngine is self-hosted with flat annual pricing, while Nylas is a managed service charging per connected mailbox. EmailEngine gives you full data control, and the flat fee comes out ahead once the mailbox count passes a crossover that depends on both vendors' current prices. ",(0,a.jsx)(i.a,{href:"/docs/comparison/emailengine-vs-nylas",children:"See detailed comparison \u2192"})]}),"\n",(0,a.jsx)(i.h3,{id:"what-email-providers-does-emailengine-support",children:"What email providers does EmailEngine support?"}),"\n",(0,a.jsx)(i.p,{children:"EmailEngine works with any email provider: Gmail, Google Worksp
1ace, Microsoft 365, Outlook.com, Yahoo, FastMail, and any IMAP/SMTP compatible email service."}),"\n",(0,a.jsx)(i.h3,{id:"is-emailengine-free",children:"Is EmailEngine free?"}),"\n",(0,a.jsxs)(i.p,{children:["EmailEngine offers a 14-day free trial with full functionality. Production use requires an annual license from ",(0,a.jsx)(i.a,{href:"https://postalsys.com/plans",children:"postalsys.com/plans"}),(0,a.jsx)(t.A,{}),"."]}),"\n",(0,a.jsx)(i.h3,{id:"can-i-use-emailengine-to-send-emails",children:"Can I use EmailEngine to send emails?"}),"\n",(0,a.jsx)(i.p,{children:"Yes. EmailEngine supports sending emails via SMTP or native APIs (Gmail API, Microsoft Graph) with features like attachments, HTML content, templates, mail merge, and delivery tracking."}),"\n",(0,a.jsx)(i.h3,{id:"can-ai-agents-use-emailengine",children:"Can AI agents use EmailEngine?"}),"\n",(0,a.jsxs)(i.p,{children:["Yes. EmailEngine includes an ",(0,a.jsx)(i.a,{href:"/docs/mcp",children:"MCP server"}),", so any Model Context Protocol client - Claude Code, Cursor, a claude.ai connector, or your own agent - can work with the connected mailboxes through a curated tool set. Agents authenticate with narrowed EmailEngine access tokens, so you decide which account they reach and whether they may only read or also send."]}),"\n",(0,a.jsx)(i.h3,{id:"where-is-my-email-data-stored",children:"Where is my email data stored?"}),"\n",(0,a.jsx)(i.p,{children:"EmailEngine stores only metadata (message IDs, flags, folder structure) in Redis. Email content is fetched on-demand from the original mailbox and is not copied to third-party servers. Your data stays on your infrastructure."}),"\n",(0,a.jsx)(i.h2,{id:"see-also",children:"See Also"}),"\n",(0,a.jsxs)(i.ul,{children:["\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/getting-started/introduction",children:"Introduction"})," - What EmailEngine is, and what it is not"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/getting-started/quick-start",children:"Quick Start"})," - Install, connect an account, send a message"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/api-reference",children:"API Reference"})," - Authentication, conventions, and error handling"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/webhooks/overview",children:"Webhooks overview"})," - Receiving events instead of polling"]}),"\n",(0,a.jsxs)(i.li,{children:[(0,a.jsx)(i.a,{href:"/docs/licensing",children:"Licensing and privacy"})," - Trial terms, and what leaves your server"]}),"\n"]})]})}function g(e={}){const{wrapper:i}={...(0,l.R)(),...e.components};return i?(0,a.jsx)(i,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},28453(e,i,n){n.d(i,{R:()=>t,x:()=>r});var s=n(96540);const a={},l=s.createContext(a);function t(e){const i=s.useContext(l);return s.useMemo(function(){return"function"==typeof e?e(i):{...i,...e}},[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),s.createElement(l.Provider,{value:i},e.children)}},87090(e,i,n){n.d(i,{A:()=>s});const s="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTAwIDQwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jb21wb25lbnQtYm94IHsgZmlsbDogI2ZmZmZmZjsgc3Ryb2tlOiAjMjU2M2ViOyBzdHJva2Utd2lkdGg6IDIuNTsgfQogICAgICAuc3RvcmFnZS1ib3ggeyBmaWxsOiAjZmVmM2M3OyBzdHJva2U6ICNmNTllMGI7IHN0cm9rZS13aWR0aDogMi41OyB9CiAgICAgIC5leHRlcm5hbC1ib3ggeyBmaWxsOiAjZGJlYWZlOyBzdHJva2U6ICMzYjgyZjY7IHN0cm9rZS13aWR0aDogMi41OyB9CiAgICAgIC50aXRsZS10ZXh0IHsgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMThweDsgZmlsbDogIzExMTgyNzsgZm9udC13ZWlnaHQ6IDcwMDsgfQogICAgICAubGFiZWwtdGV4dCB7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZpbGw6ICM2YjcyODA7IH0KICAgICAgLmhlYWRpbmcgeyBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAyNHB4OyBmb250LXdlaWdodDogNzAwOyBmaWxsOiAjMTExODI3OyB9CiAgICAgIC5jb25uZWN0aW9uIHsgc3Ryb2tlOiAjOWNhM2FmOyBzdHJva2Utd2lkdGg6IDIuNTsgZmlsbDogbm9uZTsgbWFya2VyLWVuZDogdXJsKCNhcnJvdyk7IH0KICAgICAgLmNvbm5lY3Rpb24tbGFiZWwgeyBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyBmaWxsOiAjNGI1NTYzOyBmb250LXdlaWdodDogNTAwOyB9CiAgICA8L3N0eWxlPgogICAgPG1hcmtlciBpZD0iYXJyb3ciIG1hcmtlcldpZHRoPSIxMCIgbWFya2VySGVpZ2h0PSIxMCIgcmVmWD0iOS
1IgcmVmWT0iMyIgb3JpZW50PSJhdXRvIj4KICAgICAgPHBvbHlnb24gcG9pbnRzPSIwIDAsIDEwIDMsIDAgNiIgZmlsbD0iIzljYTNhZiIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KCiAgPCEtLSBUaXRsZSAtLT4KICA8dGV4dCB4PSI1NTAiIHk9IjM1IiBjbGFzcz0iaGVhZGluZyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RW1haWxFbmdpbmUgQXJjaGl0ZWN0dXJlPC90ZXh0PgoKICA8IS0tIFlvdXIgQXBwbGljYXRpb24gKExlZnQpIC0tPgogIDxyZWN0IHg9IjUwIiB5PSIxMjAiIHdpZHRoPSIyMjAiIGhlaWdodD0iMTYwIiBjbGFzcz0iZXh0ZXJuYWwtYm94IiByeD0iOCIvPgogIDx0ZXh0IHg9IjE2MCIgeT0iMTU1IiBjbGFzcz0idGl0bGUtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+WW91ciBBcHBsaWNhdGlvbjwvdGV4dD4KICA8dGV4dCB4PSIxNjAiIHk9IjE5MCIgY2xhc3M9ImxhYmVsLXRleHQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPk1ha2VzIEFQSSBjYWxsczwvdGV4dD4KICA8dGV4dCB4PSIxNjAiIHk9IjIxMCIgY2xhc3M9ImxhYmVsLXRleHQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPnRvIEVtYWlsRW5naW5lPC90ZXh0PgogIDx0ZXh0IHg9IjE2MCIgeT0iMjQwIiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+UmVjZWl2ZXMgd2ViaG9va3M8L3RleHQ+CiAgPHRleHQgeD0iMTYwIiB5PSIyNjAiIGNsYXNzPSJsYWJlbC10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5mcm9tIEVtYWlsRW5naW5lPC90ZXh0PgoKICA8IS0tIEFycm93OiBBcHAgdG8gRW1haWxFbmdpbmUgLS0+CiAgPHBhdGggZD0iTSAyNzAgMTgwIEwgMzkwIDE4MCIgY2xhc3M9ImNvbm5lY3Rpb24iLz4KICA8dGV4dCB4PSIzMTAiIHk9IjE3MCIgY2xhc3M9ImNvbm5lY3Rpb24tbGFiZWwiPlJFU1QgQVBJPC90ZXh0PgoKICA8IS0tIEFycm93OiBFbWFpbEVuZ2luZSB0byBBcHAgLS0+CiAgPHBhdGggZD0iTSAzOTAgMjIwIEwgMjcwIDIyMCIgY2xhc3M9ImNvbm5lY3Rpb24iLz4KICA8dGV4dCB4PSIzMDUiIHk9IjI0MCIgY2xhc3M9ImNvbm5lY3Rpb24tbGFiZWwiPldlYmhvb2tzPC90ZXh0PgoKICA8IS0tIEVtYWlsRW5naW5lIChDZW50ZXIpIC0tPgogIDxyZWN0IHg9IjM5MCIgeT0iODAiIHdpZHRoPSIyMjAiIGhlaWdodD0iMjQwIiBjbGFzcz0iY29tcG9uZW50LWJveCIgcng9IjgiLz4KICA8dGV4dCB4PSI1MDAiIHk9IjExNSIgY2xhc3M9InRpdGxlLXRleHQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkVtYWlsRW5naW5lPC90ZXh0PgogIDx0ZXh0IHg9IjUwMCIgeT0iMTUwIiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Q29ubmVjdGlvbiBtYW5hZ2VtZW50PC90ZXh0PgogIDx0ZXh0IHg9IjUwMCIgeT0iMTc1IiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+RGF0YSBzeW5jICZhbXA7IGNhY2hpbmc8L3RleHQ+CiAgPHRleHQgeD0iNTAwIiB5PSIyMDAiIGNsYXNzPSJsYWJlbC10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5RdWV1ZSBtYW5hZ2VtZW50PC90ZXh0PgogIDx0ZXh0IHg9IjUwMCIgeT0iMjI1IiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+V2ViaG9vayBub3RpZmljYXRpb25zPC90ZXh0PgogIDx0ZXh0IHg9IjUwMCIgeT0iMjUwIiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+QWNjb3VudCBvcmNoZXN0cmF0aW9uPC90ZXh0PgogIDx0ZXh0IHg9IjUwMCIgeT0iMjg1IiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+U3RvcmVzIGRhdGEgaW4gUmVkaXM8L3RleHQ+CiAgPHRleHQgeD0iNTAwIiB5PSIzMDUiIGNsYXNzPSJsYWJlbC10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5Db25uZWN0cyB0byBlbWFpbCBzZXJ2ZXJzPC90ZXh0PgoKICA8IS0tIFJlZGlzIChCb3R0b20gQ2VudGVyKSAtLT4KICA8cmVjdCB4PSIzOTAiIHk9IjM0MCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI1MCIgY2xhc3M9InN0b3JhZ2UtYm94IiByeD0iOCIvPgogIDx0ZXh0IHg9IjUwMCIgeT0iMzcwIiBjbGFzcz0idGl0bGUtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+UmVkaXM8L3RleHQ+CgogIDwhLS0gRW1haWwgUHJvdmlkZXJzIChSaWdodCkgLS0+CiAgPHJlY3QgeD0iODMwIiB5PSI4MCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIyNDAiIGNsYXNzPSJleHRlcm5hbC1ib3giIHJ4PSI4Ii8+CiAgPHRleHQgeD0iOTQwIiB5PSIxMTUiIGNsYXNzPSJ0aXRsZS10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5FbWFpbCBQcm92aWRlcnM8L3RleHQ+CiAgPHRleHQgeD0iOTQwIiB5PSIxNTAiIGNsYXNzPSJsYWJlbC10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5HbWFpbDwvdGV4dD4KICA8dGV4dCB4PSI5NDAiIHk9IjE3NSIgY2xhc3M9ImxhYmVsLXRleHQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPk91dGxvb2sgLyBNaWNyb3NvZnQgMzY1PC90ZXh0PgogIDx0ZXh0IHg9Ijk0MCIgeT0iMjAwIiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+WWFob28sIEFPTDwvdGV4dD4KICA8dGV4dCB4PSI5NDAiIHk9IjIyNSIgY2xhc3M9ImxhYmVsLXRleHQiIHRleHQtYW5jaG9yPSJtaWRkbGUiPkdlbmVyaWMgSU1BUC9TTVRQPC90ZXh0PgogIDx0ZXh0IHg9Ijk0MCIgeT0iMjUwIiBjbGFzcz0ibGFiZWwtdGV4dCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Q3VzdG9tIHNlcnZlcnM8L3RleHQ+CiAgPHRleHQgeD0iOTQwIiB5PSIyODUiIGNsYXNzPSJsYWJlbC10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj52aWEgSU1BUCwgU01UUCw8L3RleHQ+CiAgPHRleHQgeD0iOTQwIiB5PSIzMDUiIGNsYXNzPSJsYWJlbC10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5HbWFpbCBBUEksIEdyYXBoIEFQSTwvdGV4dD4KCiAgPCEtLSBBcnJvdzogRW1haWxFbmdpbmUgdG8gUHJvdmlkZXJzIC0tPgogIDxwYXRoIGQ9Ik0gNjEwIDE4MCBMIDgzMCAxODAiIGNsYXNzPSJjb25uZWN0aW9uIi8+CiAgPHRleHQgeD0iNjg1IiB5PSIxNzAiIGNsYXNzPSJjb25uZWN0aW9uLWxhYmVsIj5JTUFQL1NNVFAvQVBJczwvdGV4dD4KCiAgPCEtLSBBcnJvdzogUHJvdmlkZXJzIHRvIEVtYWlsRW5naW5lIC0tPgogIDxwYXRoIGQ9Ik0gODMwIDIyMCBMIDYxMCAyMjAiIGNsYXNzPSJjb25uZWN0aW9uIi8+CiAgPHRleHQgeD0iNjk1IiB5PSIyNDAiIGNsYXNzPSJjb25uZWN0aW9uLWxhYmVsIj5FbWFpbCBkYXRhPC90ZXh0Pgo8L3N2Zz4K"}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.