gmail alternatives and similar packages
Based on the "Email" category.
Alternatively, view gmail alternatives based on common mentions on social networks and blogs.
-
bamboo
Testable, composable, and adapter based Elixir email library for devs that love piping. -
mailman
Mailman provides a clean way of defining mailers in your Elixir applications -
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.).
Tired of breaking your main and manually rebasing outdated pull requests?
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)