gmail alternatives and similar packages
Based on the "Email" category.
Alternatively, view gmail alternatives based on common mentions on social networks and blogs.
-
mailibex
Library containing Email related implementations in Elixir : dkim, spf, dmark, mimemail, smtp -
pop3mail
Pop3 client to download email from the inbox via the commandline interface. Written in Elixir. Elixir module to read pop3 mail programmatically. -
echo
A simple & highly extendable, meta-notification system; Echo checks notification preferences & dispatch notifications to different adapters (ex. email, logger, analytics, sms, etc.).
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of gmail or a related project?
Popular Comparisons
README
elixir-gmail
A simple Gmail REST API client for Elixir.
You can find the hex package here, and the docs here.
You can find documentation for Gmail's API at https://developers.google.com/gmail/api/
Usage
First, add the client to your mix.exs
dependencies:
def deps do
[{:gmail, "~> 0.1"}]
end
Then run $ mix do deps.get, compile
to download and compile your dependencies.
Finally, add the :gmail
application as your list of applications in mix.exs
:
def application do
[applications: [:logger, :gmail]]
end
Before you can work with mail for a user you'll need to start a process for them.
{:ok, pid} = Gmail.User.start_mail("[email protected]", "user-refresh-token")
When a user process starts it will automatically fetch a new access token for that user. Then you can start playing with mail:
# fetch a list of threads
{:ok, threads, next_page_token} = Gmail.User.threads("[email protected]")
# fetch the next page of threads using a page token
{:ok, _, _} = Gmail.User.threads("[email protected]", %{page_token: next_page_token})
# fetch a thread by ID
{:ok, thread} = Gmail.User.thread("[email protected]", "1233454566")
# fetch a list of labels
{:ok, labels} = Gmail.User.labels("[email protected]")
Check the docs for a more complete list of functionality.
API Support
- [ ] Threads
- [x]
get
- [x]
list
- [ ]
modify
- [x]
delete
- [x]
trash
- [x]
untrash
- [x]
- [ ] Messages
- [x]
delete
- [x]
get
- [ ]
insert
- [x]
list
- [x]
modify
- [ ]
send
- [x]
trash
- [x]
untrash
- [ ]
import
- [ ]
batchDelete
- [x]
- [x] Labels
- [x]
create
- [x]
delete
- [x]
list
- [x]
update
- [x]
get
- [x]
update
- [x]
patch
- [x]
- [ ] Drafts
- [x]
list
- [x]
get
- [x]
delete
- [ ]
update
- [ ]
create
- [x]
send
- [ ]
send
(with upload)
- [x]
- [x] History
- [x]
list
- [x]
- [x] Attachments
- [x]
get
(thanks to @killtheliterate)
- [x]
Auth
As of now the library doesn't do the initial auth generation for you; you'll need to create an app on the Google Developer Console to get a client ID and secret and authorize a user to get an authorization code, which you can trade for an access token.
The library will however, when you supply a refresh token, use that to refresh
an expired access token for you. Take a look in the dev.exs.sample
config
file to see what your config should look like.
TODO
- [x] Stop mocking HTTP requests and use Bypass instead
- [x] Add format option when fetching threads
- [x] .. and messages
- [ ] .. and drafts
- [ ] Batched requests
- [ ] Document the config (specifically pool size)