IMAP API – self hosted daemon to access IMAP and SMTP accounts via HTTP API
github.com
github.com
imapapi, in my opinion, being a RESTful API, appears to have a much simpler surface, seems easier to play with using curl, and if you're developing a bunch of RESTful services that use Swagger, it fits better with your stuff. So, less dev-time to use :-)
I’m convinced if nothing else the jmap json format is what everyone should be using for passing around email objects since it’s so well designed and feature rich. Almost all hand rolled email json formats throw away data you really want when rendering or processing email messages.
IMAP api does look lovely though.
Nobody says you need to implement all of JMAP (from a client perspective). Just implement Email/query Email/get
I ended up using the underlying lib that this project uses (also by andris9) and have had basically no problems whatsoever, it was a night and day difference.
This would allow you to use the api with any JMAP client like Ltt.rs for example.
If it's the latter, Radicale is awesome.[1]
Pulling raw iCal data over HTTP is possible but if you say, set up a recurring event several months back, you need to fetch that original event (even if it recurs every day) to include it in your calculations... I'd love a self-hosted version of this Nylas API [0] for example.
We are evaluating if it may be interest on it to release as a separate SaaS.
You can find my email on my profile if you want to discuss further your needs.
https://tools.ietf.org/html/rfc5545#section-1
CalDAV is already built on HTTP, it's just implemented with a lot of gotchas and ancient history: https://tools.ietf.org/html/rfc4791#section-1
http://www1.udel.edu/CIS/software/dist/google/calendar/java.... for Google Calendar ics feed documentation (there might be better links, this just came up first)
JMAP never took off. Maybe, if projects would copy the odata based graph api that ms documented we could collectively move there...
Personally I went a bit overboard with it and implemented a simple TCP server in node which queries GitLab APIs based on the email metadata and moves Mails into Folders based on assignees, Labels etc. So letting do imapfilter the heavy IMAP stuff, calling node via tcp and using the response to sort based on it.
I just wanted to give an alternative in case someone wants to programmatically interact with their email inbox without setting up and maintaining a service.
I just realized, would Elixir be the perfect platform for this since you could have a GenServer process that has a constantly alive IMAP connection for each server?
I'm not sure if this API is initiating an IMAP connection each time you request something, but keeping that connection alive could be really interesting.
Also can you use a regular connection pooling library to do this?
Or am I imagining a problem that doesn't exist? (overhead of reconnecting to IMAP server for each request)
A few issues are:
- it does not properly handle the case when you send something invalid in a continuation mode
- continuation commands from the command response queue (well it’s a gb tree actually) don’t actually get a response
- there is a weird bug where some pieces of mail don’t get processed - might be something wrong with me porting the code. It’s also not necessary since the mail parser from that Erlang smtp lib can be used
Any plans to provide it in a Docker container? I'd be willing to maintain one & push it to Docker Hub, for the AGPL version, if you don't have the time.
Related: Here's a very simple one from a few years ago that does 1:1 sync via IMAP into CouchDB. CouchDB directly provides the local HTTP/REST UI & APIs: https://github.com/thomaswilley/yama
I might have to start using this instead. Mine basically just powers contact forms (send only).
In fact I am not sure you have to make the source of your modified AGPL software available to end users if you are using it internally ("users of that server" from the license would be you), but IANAL.
It would only be polite to contribute back if you did find a bug fix anyway.
AGPL seems the most appropriate license for software like this.
It isn't clear exactly what is required here. I think the intention is that this is fine, but then what if you were just to modify it and stick a TCP proxy in front? Does that mean that you don't need to distribute your modifications?
The is ambiguous enough that Google with their army of lawyers forbids any use of AGPL software https://opensource.google/docs/using/agpl-policy/