On Jan 18, 2007, at 12:52, Phil Cooperking wrote:

> I've been trying to find a good source of imap or pop information with
> ruby and cant. maybe I'm missing somthing.
>
> as I understand with imap you can select parts of the BODY like [TEXT]
> [1]. I understand what text does but I was underthe impression that  
> [1]
> would select just the plain text. with that does'nt always seem to be
> the case with my test program. most of the results will come in plain
> text then some will contain a both multiparts. So does [1] actually
> do(mean).
>
> What I'm trying to do is strip everything from the mail apart from the
> Enevelope and the plain text. can somebody point me in the right
> direction? this is the line of code that I've been using to pull the
> email with
>
> mail.message = imap.fetch(message_id, 'BODY[1]')[0].attr['BODY[1]']

I think that BODY[1] means grab the first section of the message  
body.  You'll need to figure out which section is text/plain first,  
then grab that section.

I think something like:

header = imap.fetch 397, 'RFC822.HEADER'
header.first.attr['RFC822.HEADER'] =~ /^Content-Type: .*$/
$&
# => "Content-Type: multipart/alternative; \r"

Since this is a multipart message, then figure out which chunk is what:

imap.fetch 397, 'BODY[1.MIME]'
# => [#<struct Net::IMAP::FetchData seqno=397, attr={"BODY 
[1.MIME]"=>"Content-Type: text/plain; charset=ISO-8859-1;  
format=flowed\r\nContent-Transfer-Encoding: 7bit\r\nContent- 
Disposition: inline\r\n\r\n"}>]

imap.fetch 397, 'BODY[2.MIME]'
# => [#<struct Net::IMAP::FetchData seqno=397, attr={"BODY 
[2.MIME]"=>"Content-Type: text/html; charset=ISO-8859-1\r\nContent- 
Transfer-Encoding: 7bit\r\nContent-Disposition: inline\r\n\r\n"}>]

imap.fetch 397, 'BODY[3.MIME]'
# => [#<struct Net::IMAP::FetchData seqno=397, attr={}>]

So the first chunk is text/plain, grab it:

imap.fetch 397, 'BODY[1]'
=> [#<struct Net::IMAP::FetchData seqno=397, attr={"BODY[1]"=>"..."}>]

See also RFC 3501 section 6.4.5.

http://www.rfc-editor.org/rfc/rfc3501.txt

-- 
Eric Hodel - drbrain / segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!