Elixir library to interact with Sendgrid's V2 Web API
The reason the version got bumped to 1.0.0 is because I replaced all traces of Dict with Map. A lot of the functions returned a Dict and this may break some folks code.
There are some other changes to dep versions which may be an issue in your application as well. If this is the case, stay with 0.X branch. I will try to keep 0.X up to date as best I can for these reasons. However, there will not be any new dev time for the 0.X series. Only bug fixes.
In order to install it via hex, add exgrid and ibrowse package into the deps list of your mix.exs.
defp deps do
[
{:exgrid, "~> 1.0"}
]
endExGrid.Message.newrequires atextand/orhtmlbody
{:ok, creds } = ExGrid.credentials(%{api_key: "mysecretpassword", api_user: "[email protected]"})
{:ok, message } = ExGrid.Message.new([to: "[email protected]", subject: "hello world", from: "[email protected]", text: "this is a test message"])
{code, body} = ExGrid.Mail.send(creds, message)
{200, %{"message" => "success"}}{200, body } = ExGrid.Profile.get(creds)
IO.inspect body #=>
[%{"first_name", "John"}, {"username", "[email protected]"}, {"website_access", "true"}, {"phone", "123456789"}, {"state", "CO"}, {"last_name", "Doe"}, {"address2", ""}, {"city", "Denver"}, {"email", "[email protected]"}, {"website", "http://sendgrid.com"}, {"country", "US"}, {"active", "true"}, {"zip", "80020"}, {"address", "123 main st"}]{200, body} = ExGrid.Profile.set(creds, %{address: "456 Main st"})
IO.inspect body #=> %{"message", "success"}Please see docs for all parameters
{200, body} = ExGrid.Bounces.get(creds)# return the `created` time for each bounce
{200, body} = ExGrid.Bounces.get(creds, %{date: 1}){200, body} = ExGrid.Bounces.remove(creds, %{type: "soft"})
IO.inspect body #=> {"message", "success"}{200, body} = ExGrid.Bounces.remove(creds, %{email: "[email protected]"})
IO.inspect body #=> {"message", "success"}{200, body} = ExGrid.Bounces.count(creds)
IO.inspect body #=> {"count", "4"}Please see docs for all parameters
{200, body} = ExGrid.Blocks.get(creds)# return the `created` time for each block
{200, body} = ExGrid.Blocks.get(creds, %{date: 1})- only parameter accepted is
email
{200, body} = ExGrid.Blocks.remove(creds, %{email: "[email protected]"})
IO.inspect body #=> {"message", "success"}{200, body} = ExGrid.Blocks.count(creds)
IO.inspect body #=> {"count", "4"}Please see docs for all parameters
{200, body} = ExGrid.Statistics.get(creds)
IO.inspect body #=>
[
%{
"date": "2014-02-26",
"delivered": 314,
"unsubscribes": 1,
"invalid_email": 5,
"bounces": 9,
"repeat_unsubscribes": 2,
"unique_clicks": 65,
"blocked": 3,
"spam_drop": 5,
"repeat_bounces": 8,
"repeat_spamreports": 9,
"requests": 350,
"spamreports": 1,
"clicks": 78,
"opens": 80,
"unique_opens": 70}
]{200, body} = ExGrid.Statistics.get(creds, %{days: 1}){200, body} = ExGrid.Statistics.categories(creds){200, body} = ExGrid.Statistics.get(creds, %{aggregate: 1})The tests are a unit style and do not go out and hit SendGrid.
mix test