Skip to content

Documentation

Send email with Rails Action Mailer.

Register :mailtruss as the delivery method, or use plain SMTP.

Before you start

You need a verified sending domain (see Domains) and an API key (under API keys in the dashboard; it is shown once). Keep the key in an environment variable on your server, never in code that runs in a browser or an app.

Option 1: the delivery method

With the gem in your Gemfile, :mailtruss is registered as an Action Mailer delivery method, so existing mailers need no change.

Gemfile
gem "mailtruss"

Configuration

Set the delivery method and the key for the environment that should send.

config/environments/production.rb
config.action_mailer.delivery_method = :mailtruss
config.action_mailer.mailtruss_settings = { api_key: ENV["MAILTRUSS_API_KEY"] }

Option 2: SMTP

Without the gem, use Rails' SMTP delivery method. The API key is the password.

config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.mailtruss.com", port: 587, user_name: "mailtruss",
password: ENV["MAILTRUSS_API_KEY"], authentication: :plain, enable_starttls: true,
}

Try it without sending real mail

From rails console, deliver a message to the test address. It needs no verified domain and reaches no real mailbox.

rails console
ActionMailer::Base.mail(from: "hello@yourdomain.com", to: "delivered@mailtruss.test", subject: "Test", body: "Hello from Rails").deliver_now

See what happened

Open the message under Emails in the dashboard: it shows the recorded timeline, what each event proves, and a diagnosis if something went wrong. Or fetch it with GET /api/v1/emails/:id/events. To be told as it happens, add a webhook.

If it fails

API requests answer with an error name and message. The common ones:

  • 403 invalid_api_key or 401 missing_api_key: the key is wrong, revoked or not sent. Send it as Authorization: Bearer ms_live_….
  • 403 domain_not_verified: the from address is on a domain that is not verified. Publish the DNS records and re-check.
  • 422 validation_error: fix the field the message names. Nothing was sent and no quota was used.
  • 429 rate_limit_exceeded: back off for the Retry-After header. See rate limits.

Over SMTP, the relay answers with a reply code:

  • 535: the API key is wrong or revoked. Fix the password.
  • 550: refused for good (unverified domain, suppressed recipient, invalid message). Do not retry; the reply says why.
  • 552: too large, or the monthly limit is reached.
  • 451 or 452: temporary (rate limit, daily limit, or a brief problem on our side). Retry later; mail servers do this automatically.

Problems that happen after a message is accepted (bounces, complaints) are explained under delivery errors.

Other guides

Last updated

Something wrong or unclear on this page?

Report an issue