0.04
No commit activity in last 3 years
No release in over 3 years
This gem will help you take JSON posted to your app from incoming email through Postmark. It will turn it back into an object with methods to help inspect the contents of the email
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.0
~> 1.8.3
~> 2.9.0

Runtime

 Project Readme

Postmark Mitt¶ ↑

WARNING: ABANDONWARE-ish USE WITH CAUTION

This gem provides a little wrapper object for taking JSON from Postmark’s incoming email system and composing it back into an object resembling an email. This comes in handy when you are trying to figure out what to do with the email.

Postmark-mitt has been verified to work on Ruby Enterprise Edition 1.8.7, 1.9.2 and 1.9.3.

Install¶ ↑

gem install postmark-mitt

Example¶ ↑

require 'lib/postmark_mitt'

# if you are just playing with this library
email = Postmark::Mitt.new(File.read("path/to/json/file/in/spec/fixtures"))

# if you are doing this in a controller
email = Postmark::Mitt.new(request.body.read)

email.to # "api-hash@inbound.postmarkapp.com"
email.from # Bob Bobson <bob@bob.com>
email.from_email # bob@bob.com
email.text_body
email.html_body
email.headers # returns a hash of the headers

email.attachments # array of attachment objects

attachment = email.attachments.first
attachment.file_name
attachment.content_type
attachment.read # will base64 decode the content... eventually this will lazy-load the file from Postmark
attachment.size # NYI
# You get the idea

A lot of times you want to do something with the email, like create a post

mitt = Postmark::Mitt.new(request.body.read)
Post.create_from_postmark(mitt)

class Post
  def self.create_from_postmark(mitt)
    author = User.find_by_api_email(mitt.to)
    handle_no_author # send an email back saying we couldn't find them
    post = new
    post.title = mitt.subject
    post.author = author
    post.photo = mitt.attachments.first.read
    post.message_id = mitt.message_id # Make sure we don't process the same email twice
    # You get the idea, right?
    post.save
    post
  end
end

Note on Patches/Pull Requests¶ ↑

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history.

  • Send me a pull request. Bonus points for topic branches.

Authors & Contributors¶ ↑

  • Randy Schmidt

Copyright © 2011 Randy Schmidt. See LICENSE for details.