Nick Charlton

Using Postmark with Sinatra

I usually use Postmark for outgoing transactional email, I find this to be better than expecting the underlying system to have a correctly configured sendmail and it helps with deliverability. Sinatra, though, doesn’t have a convention for handling email. The Sinatra FAQ lists an example using Pony, so going from there, here’s an example of using the Postmark Gem with Sinatra:

require 'sinatra'
require 'postmark'

configure do
  set :mailer, Postmark::ApiClient.new('')
end

get '/send_mail' do
  settings.mailer.deliver(from: 'example@example.com',
                          to: 'example@example.com',
                          subject: 'A Test Email',
                          text_body: 'A simple plain text test email.')
end

I’m just using the standard settings handling to keep hold of the Postmark client here. You could do it in any way. You can also render views (like you’d typically do with ActionMailer), like so:

get '/send_html_mail' do
  settings.mailer.deliver(from: 'example@example.com',
                          to: 'example@example.com',
                          subject: 'An HTML Test Email',
                          html_body: erb(:email))
end

…where, :email is email.erb in views/:

<p>A simple <i>HTML</i> test email.</p>

And then you have simple Postmark email support. The rest of the Postmark Gem documentation details everything else you’d be able to do with it.