# Extracting just the text of an ActionMailer receive e-mail

**URL:** <https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265>\
**Category:** Rails\
**Created:** [March 18, 2009, 7:41pm UTC](https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265 "2009-03-18T19:41:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 18, 2009, 7:41pm UTC](https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265/1 "2009-03-18T19:41:21Z")

</div>

Unfortunately my Googling skills have failed me. I’m looking for  
something that will help me quickly parse through the body of a  
message received by my ActionMailer based code. Here’s the issue: If  
someone sends an e-mail to an address that I am reading the body of  
the message will often contain two parts: a text version of the  
message and/or an HTML version of the message.

I know there are MIME parsing and multi-part issues here, I’m just  
looking for a super simple routine that will grab a single text based  
version of the message body so that I can store it in my DB. Any  
hints, recommendations or links I should be following?

Thanks in advance!

–David

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 18, 2009, 7:44pm UTC](https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265/2 "2009-03-18T19:44:52Z")

</div>

> hints, recommendations or links I should be following?  
> I haven’t done it in Ruby yet, but my advice would be to go find that  
> MIME parsing library and use it.

Then it becomes a simple matter of looping through the body parts  
until you find one that is plain text.

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 19, 2009, 3:39pm UTC](https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265/3 "2009-03-19T15:39:25Z")

</div>

> Unfortunately my Googling skills have failed me. I’m looking for  
> something that will help me quickly parse through the body of a  
> message received by my ActionMailer based code. Here’s the issue: If  
> someone sends an e-mail to an address that I am reading the body of  
> the message will often contain two parts: a text version of the  
> message and/or an HTML version of the message.s\>  
> I know there are MIME parsing and multi-part issues here, I’m just  
> looking for a super simple routine that will grab a single text based  
> version of the message body so that I can store it in my DB. Any  
> hints, recommendations or links I should be following?

Take a look at MMS2R. While it was written to handle MMS message, it’s  
good at pulling apart any kind of email.

–  
Starr H.  
Check out my Helpdesk RailsKit: [http://railskits.com/helpdesk/](http://railskits.com/helpdesk/)

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 19, 2009, 9:14pm UTC](https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265/4 "2009-03-19T21:14:17Z")

</div>

Philip & Starr, thanks for the suggestions. I appreciate the  
response.

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [March 20, 2009, 3:44am UTC](https://www.ruby-forum.com/t/extracting-just-the-text-of-an-actionmailer-receive-e-mail/163265/5 "2009-03-20T03:44:55Z")

</div>

I ended up using the MMS2R library and it was quite simple and did  
exactly what I needed.

MMS2R is here: [http://rubyforge.org/projects/mms2r/](http://rubyforge.org/projects/mms2r/)

I installed it using the gem command:

sudo gem install mms2r

Added this to the top of my ActionMailer file:

require ‘mms2r’

Then all I needed to do to get the text only version of the body of an  
incoming message was this:

(inside my receive(mail) handler)

mms = MMS2R::Media.new(mail)  
plain\_body\_text = mms.body

The only catch I encountered was that I wanted to extract MMS2R into  
my vendor/gems directory but I really had a difficult time finding all  
of the dependencies. I ended up punting and simply installing the gem  
on my server as well, though I would rather not do that.

I hope this helps anyone searching for this kind of capability.

–David
