mailgun library for ruby
Switch branches/tags
Nothing to show
Pull request Compare This branch is 2 commits ahead, 130 commits behind HashNuke:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This gem allows for idiomatic Mailgun usage from within ruby. Mailgun is a kickass email-as-a-service that lets you use email as if it made sense. Check it out at

The official gem repo is at

Mailgun exposes the following resources:

  • Routes
  • Log
  • Stats
  • Messages
  • Mailboxes

Currently the gem only exposes the Mailbox and Routes APIs, but patches are welcome (and easy!).


We mimic the ActiveRecord-style interface.


# Initialize your Mailgun object:
Mailgun.configure do |config|
  config.api_key = 'your-api-key'

@mailgun = Mailgun()

# or alternatively:
@mailgun = Mailgun(:api_key => 'your-api-key')

# Create a mailbox
@mailgun.mailboxes.create "", "password"

# List all mailboxes that belong to a domain
@mailgun.mailboxes.list ""

# Destroy a mailbox (queue bond-villian laughter)
# "I'm sorry Bond, it seems your mailbox will be... destroyed!"
@mailbox.mailboxes.destroy ""


# Initialize your Mailgun object:
@mailgun = Mailgun(:api_key => 'your-api-key')

# Create a route
# Give it a human-readable description for later, a priority
# filters, and actions
@mailgun.routes.create "Description for the new route", 1,
     [:match_recipient, ""],
     [[:forward, ""],

# List all routes that belong to a domain
# limit the query to 100 routes starting from 0
@mailgun.routes.list 100, 0

# Get the details of a route via its id
@mailgun.routes.find "4e97c1b2ba8a48567f007fb6"

# Update a route via its id
# (all keys are optional)
@mailgun.routes.update "4e97c1b2ba8a48567f007fb6", {
     :priority => 2,
     :filter   => [:match_header, :subject, "*.support"],
     :actions  => [[:forward, ""]]

# Destroy a route via its id
@mailbox.routes.destroy "4e97c1b2ba8a48567f007fb6"

Supported route filters are: :match_header, :match_recipient, and :catch_all Supported route actions are: :forward, and :stop

Making Your Changes

  • Fork the project (Github has really good step-by-step directions)
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so we don't break it in a future version unintentionally.
  • After making your changes, be sure to run the Mailgun RSpec specs to make sure everything works.
  • Submit your change as a Pull Request and update the GitHub issue to let us know it is ready for review.



  • Huge thanks to the Mailgun guys for such an amazing service! No time spent on mailservers == way more time spent drinking!
  • Yomi Colledge for his contributions

License & Copyright

Released under the MIT license. See LICENSE for more details.

All copyright Bushido Inc. 2011