EmailEngine Email API

EmailEngine is an email client but for apps, not people.

Effortless email integration for your app or service. Simplify IMAP and SMTP complexities, and focus on what truly matters. Build better features, faster.

Self-hosted solution for developers and businesses.

Screenshot 2022-12-20 at 11.13.35.png
EmailEngine - Access any email account to receive/send emails with an API | Product Hunt

Download

Get EmailEngine for your system. Free 14-day trial included.

Quickstart

EmailEngine is a self-hosted email automation platform that offers easy access to email accounts through a user-friendly HTTP REST API for receiving and sending emails. The platform actively monitors these accounts and sends webhook notifications for any updates.

Here's how to get started:

  1. Check out the installation instructions for your system here.
  2. Launch EmailEngine from the command line:
$ emailengine --dbs.redis="redis://127.0.0.1:6379"
  1. Open http://127.0.0.1:3000 in your browser and activate a free 14-day trial.
  2. Generate an access token and head over to the API Reference page to test out some API calls.

The Smart Choice for Email Integration

Skip the hassle of navigating complex email protocols. EmailEngine saves you valuable developer hours by simplifying IMAP and SMTP integrations.

Focus on your app's core features while we handle the intricate details of numerous RFC specs. EmailEngine: the powerful alternative to building your own email class library.

Full control
Own the stack
Complexity hidden away
Screen Capture 012 - EmailEngine - emailengine.srv.dev.jpg

Easy to use REST API

The REST API with JSON payloads you expect it to be. No need to know IMAP internals, weird encodings, or juggle with different IMAP extensions.

Unicode strings
Binary attachments
Paged listings

Real-time Notifications via Webhooks

Stay informed in real-time with EmailEngine's webhook support, sending you a notification every time there's an update on the user's email account.

Incoming emails
Deleted emails
Screen Capture 013 - EmailEngine - emailengine.srv.dev.jpg

Who can benefit from EmailEngine?

SaaS CRM services

Integrate your users' email accounts with your platform to track email correspondence activity between users and their contacts.

Web agencies

Create innovative features for your clients, such as customized newsletter platforms.

Email hosting providers

Develop a tailored webmail interface on top of your email hosting offerings.

SMB companies

Monitor and automate your support and info mailboxes.

Email warmup services

Automate the warmup process between different email accounts to enhance email deliverability.

Web-hosting providers

Supervise and automate special email accounts like postmaster or abuse mailboxes.

Enterprise companies

Leverage EmailEngine as an IMAP or SMTP proxy between your legacy applications and MS365 OAuth accounts.

Cold outreach services

Automate email sending and replying to prospects' messages.

Almost Perfect Deliverability

EmailEngine utilizes the user's own email servers to send emails, giving the appearance to the recipient that the email was sent directly from the user, rather than through a third-party service, resulting in near-perfect deliverability.

Uploads to Sent Mail
Adds reference headers
Bounced email detection
Stored MJML templates

Seamless OAuth2 Integration

Easily integrate with Gmail and Outlook servers using EmailEngine's fluent OAuth2 support. You have the option to either manage token renewals yourself or let EmailEngine handle the process for you.

Screen Capture 011 - EmailEngine - emailengine.srv.dev.jpg
mermaid-diagram-2023-10-13-064131.png

Built-in OAuth2 Proxy for IMAP and SMTP

Bridge the gap between traditional IMAP and SMTP clients and modern OAuth2-enabled email accounts with EmailEngine. Clients can effortlessly authenticate using their standard passwords, while EmailEngine takes care of the OAuth2 connection in the background, ensuring a smooth relay of commands from the client to the server.

IMAP
SMTP
MS365
Gmail

Convenient Hosted Authentication

Streamline the authentication process for your users with EmailEngine's hosted authentication form. Once the email account is authorized, the user will be redirected back to your app.

While you can still register accounts through API calls, hosted authentication provides a more user-friendly and easier setup option during development.

IMAP/SMTP
Gmail
Outlook
Screen Capture 010 - EmailEngine - emailengine.srv.dev.jpg

Look under the hood

Gain insight into EmailEngine's workings with the multiple logging options available, including the ability to log full IMAP transactions for debugging purposes.

Full transaction logs
Per-user logs

Effortless Custom Integrations

Easily create custom webhook routes using EmailEngine's low-code integration capabilities. Define filter functions and output mappers to transform events into chat messages in Slack or Discord, or send the data to Zapier for additional processing.

Screen Capture 015 - EmailEngine - emailengine.srv.dev.jpg
Screenshot 2023-10-26 at 15.36.35.png

Chat with emails

EmailEngine can automatically generate embeddings for all emails and store these in ElasticSearch. Using the Chat API endpoint, you could ask questions about emails based on the stored embeddings.

OpenAI integration

EmailEngine uses OpenAI to generate the embeddings and ask the questions.

Monitoring

EmailEngine exposes a Prometheus metrics collection endpoint for easier monitoring.

Grafana
Prometheus
Screenshot 2022-04-16 at 14.17.09.png

FAQ

Who is EmailEngine intended for?

EmailEngine is ideal for anyone looking to integrate their system with existing email accounts. For instance, a help desk service that operates through the support@domain.tld account and converts incoming emails into support tickets.

How does EmailEngine function?

EmailEngine maintains an open IMAP connection to each registered email account and continuously listens for any changes. When you make a request through the API, EmailEngine converts it into the corresponding IMAP command to execute the desired action.

Is a license key required?

You can start a free 14-day trial directly from the dashboard without the need for a license key. Once the trial license expires, EmailEngine will stop processing IMAP accounts until a valid commercial license is obtained.

Do I need to purchase multiple license keys?

Typically, no. You would pay for a yearly subscription to Postal Systems, not for multiple license keys for EmailEngine software. If your subscription is active, you can generate as many license keys as needed at no extra cost.

What are the system requirements for EmailEngine?

EmailEngine requires Redis as its caching database. As long as you have a reasonably recent version of Redis installed, you should be good to go. For optimal performance, it's recommended to keep the latency between Redis and EmailEngine as low as possible.

What protocols does EmailEngine support?

EmailEngine utilizes IMAP to access email accounts and SMTP to send emails. Other protocols such as POP3, ActiveSync, or the Exchange Web Services (EWS) SOAP API are not currently supported, but they may be added in the future.

What are the data compliance considerations with EmailEngine?

As a self-hosted solution, EmailEngine does not send or store any data outside of your network. It only retains minimal metadata necessary for syncing and caching, but not the actual contents of the emails. This ensures that all data remains securely within your network.

Is it possible to run multiple EmailEngine instances with shared Redis database?

Currently, this is not supported. Horizontal scaling is on the development roadmap, but there is no estimated time of arrival for this feature at this time.

Why am I receiving a lot of 504 errors for API calls?

IMAP is a single-threaded protocol, meaning that only one command can be executed at a time per account, and you must wait for it to finish before issuing another command. If multiple API requests are made against a single account simultaneously, EmailEngine will queue these requests and process them one at a time. If a queued command cannot be processed within 10 seconds, EmailEngine will abort it with a 504 response.

To resolve this, you have two options: either avoid sending multiple requests at the same time, or increase the 10-second limit. The "Max command duration" option can be found in the configuration options, as documented here.

Is EmailEngine similar to Nylas Universal Email API?

For a detailed comparison, you can refer to the comparison article here. In brief, while both may seem alike, they are in fact, significantly different.

I have a different question not answered here.

If you have a question that hasn't been answered, you can reach out for help in the EmailEngine's support channels.