Show HN: EmailEngine, open source REST interface to read and send email messages(github.com)
github.com
Show HN: EmailEngine, open source REST interface to read and send email messages
https://github.com/postalsys/emailengine
9 comments
I started to use it for a sideproject a month ago and it works like a charme. Thanks for that
Over the past few years I've searched for something like this, here and there, thinking I wasn't using the right search terms and then giving up. I'll certainly give this a try!
Out of curiosity, are there any other comparable projects you know of? I wondering what I had to have searched for in the past hah
Out of curiosity, are there any other comparable projects you know of? I wondering what I had to have searched for in the past hah
Only project I know is the Close.io fork of open source Nylas Engine (the original project was discontinued years ago) https://github.com/closeio/sync-engine
Wonderful. Any chance there will be a way to run it as a binary with sqlite or something lighter than redis? I was hoping to spin it up only occasionally for sending in batches.
I have considered SQLite, mostly so that EmailEngine could be run locally, for example as an Electron app. So far haven't had the time for it though and it hasn't been a priority, so can't give any ETA's.
I thought jmap exactly that (and standardized). Is there something that this does differently?
link: jmap.io
link: jmap.io
JMAP is a server protocol, so that the account's email server should provide JMAP endpoint instead of (or in addition to) IMAP, SMTP or ActiveSync. JMAP has almost no support at all, so if you are connecting to an email server there is a great chance that the server supports IMAP, fewer servers support Exchange ActiveSync and almost no server (except Fastmail and maybe some others) support JMAP.
EmailEngine on the other hand is not an email server but more like a reverse proxy, it takes REST commands from the client and sends IMAP/SMTP commands to the account's email server. So for the email server it looks like that the client is speaking IMAP/SMTP and for the client it seems that the server is speaking REST/JSON.
Additionally EmailEngine performs tasks that are hard to do when dealing with a regular IMAP server. For example it tracks changes on the account, so if something is added or deleted, then EmailEngine sends a webhook notification for it.
If you are interacting with an IMAP server directly then usually you see that a folder has fewer emails stored in it than during the previous check but there is no indication which messages were actually deleted.
EmailEngine on the other hand is not an email server but more like a reverse proxy, it takes REST commands from the client and sends IMAP/SMTP commands to the account's email server. So for the email server it looks like that the client is speaking IMAP/SMTP and for the client it seems that the server is speaking REST/JSON.
Additionally EmailEngine performs tasks that are hard to do when dealing with a regular IMAP server. For example it tracks changes on the account, so if something is added or deleted, then EmailEngine sends a webhook notification for it.
If you are interacting with an IMAP server directly then usually you see that a folder has fewer emails stored in it than during the previous check but there is no indication which messages were actually deleted.
Isn't any API a "server protocol"?
There are client libraries like (https://github.com/linagora/jmap-client-ts) which allow you to perform all mailbox actions. I'm trying to understand what I can do better as a client - does emailengine enable something that JMAP API will not? You called out webhook as one.
There are client libraries like (https://github.com/linagora/jmap-client-ts) which allow you to perform all mailbox actions. I'm trying to understand what I can do better as a client - does emailengine enable something that JMAP API will not? You called out webhook as one.
If your email server supports JMAP (for example if you are a Fastmail user) then that's great – most probably you'd not need anything like EmailEngine at all and can use the JMAP clients. The problem is that almost no email server in the world supports JMAP at this point. It might change in the future, though anything related to changes in email take years if not decades. If you want to communicate with an existing email server then you either have to use IMAP, POP3 or a service specific API (eg Gmail API or O365 API).
Using IMAP seems easy at first, and it is, if all you need to do is to list current contents of a mailbox folder. As soon as you want to start tracking changes, everything gets really messy. If it would be possible to use JMAP instead, it wouldn't be so hard but, as I stated, email servers do not actually support JMAP.
Using IMAP seems easy at first, and it is, if all you need to do is to list current contents of a mailbox folder. As soon as you want to start tracking changes, everything gets really messy. If it would be possible to use JMAP instead, it wouldn't be so hard but, as I stated, email servers do not actually support JMAP.