Last active
April 3, 2018 14:00
-
-
Save blackfist/bcc3b0866787e48437fc to your computer and use it in GitHub Desktop.
Example of using Elixir and HTTPotion to send mail to Mailgun using the api.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Mailgun do | |
@doc """ | |
Sends a basic message to an address. Expects a mailgun domain environment | |
variable (MAILGUN_DOMIAN) and a mailgun api key environment variable | |
(MAILGUN_API_KEY). | |
""" | |
@spec mail(String.t) :: String.t | |
def mail(toAddress) do | |
url = "https://api.mailgun.net/v3/#{System.get_env("MAILGUN_DOMAIN")}/messages" | |
headers = ["User-Agent": "Elixir", | |
"Content-Type": "application/x-www-form-urlencoded"] | |
params = ["from=noreply@heroku.com", | |
"to=#{toAddress}", | |
"subject=Missing GitHub 2FA", | |
"text=Can you believe that?"] | |
user = {"api", System.get_env("MAILGUN_API_KEY")} | |
response = HTTPotion.post url, [body: Enum.join(params, "&"), | |
basic_auth: user, | |
headers: headers] | |
case response.status_code do | |
200 -> "Message queued for delivery to #{toAddress}" | |
400 -> "Some kind of message error. Mailgun returned #{Poison.decode!(response.body) |> Map.get("message")}" | |
401 -> "Some kind of authentication error. Mailgun returned #{response.body}" | |
_ -> "Something wrong with the request" | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment