For all the likes, shares, tweets, pokes, follows, and friends, there’s a fundamental core to the internet that, no matter how hard some might hope, will never go away—email. Rails has built-in support for outgoing mail with ActionMailer, but nothing on the omakase menu handles incoming mail. To help with that, we extracted Griddler from Trajectory and are now happy to release it—hot off the… ahem… presses.
Griddler is a Rails engine that provides an endpoint for the SendGrid Parse API. It hands off a preprocessed email object to a class implemented by you. We’re happy to look at pull requests that interface with other email services.
To get Griddler integrated with your app, add Griddler to your
Griddler automatically adds an endpoint to your routes table resembling the following:
post '/email_processor' => 'griddler/emails#create'
But you may copy, paste, and modify that anywhere else in your routes for the purposes of your application.
Once Sendgrid posts to your endpoint Griddler will take care of packaging up the
important bits of that data and providing a nice
Griddler::Email object for
you. The contract we expect you to go in on with Griddler at this point is that
you will implement a class called
EmailProcessor, containing a class method
process, which we will be passing that packaged up instance of
For example, in
class EmailProcessor def self.process(email) # all of your application-specific code here - creating models, # processing reports, etc end end
The email object contains the following attributes:
subject fall on the obvious side as to their purpose.
Let your users interact with your app via email
What isn’t entirely obvious (but very cool) is that Griddler helps you handle
the email body by cleaning up replies and providing the important parts of an
-- Reply ABOVE THIS LINE -- in the
body attribute. Note that
the reply delimeter is adjustable in the configuration. We keep
around, as contains everything before Griddler scrubs it into
body so that you
may use the contents for other purposes.
There is much more information in the Griddler README explaining the details, configuration, testing, and other bits.
If you like it, let us know what you think! As always, you can find the code on GitHub. We look forward to hearing all of the ways you use Griddler!