IMAP stuff (or POP)

P

Phil Cooperking

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]']

thanks
 
E

Eric Hodel

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
 
E

Eric Hodel

I've been trying to find a good source of imap or pop information =20
with
ruby and cant. maybe I'm missing somthing.

as I understand with imap you can select parts of the BODY like =20
[TEXT]
[1]. I understand what text does but I was underthe impression =20
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 =20=
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 =3D imap.fetch(message_id, 'BODY[1]')[0].attr['BODY[1]']

If it is an option for you, try downloading the entire mail and use =20=
tmail or
rubymail to parse/split it. Maybe the problem is with your imap =20
server.

http://www.lickey.com/rubymail/
http://i.loveruby.net/en/projects/tmail/

No need. The IMAP RFC, like most RFCs, takes a little practice to =20
read. Plus you save bandwidth and processing time by only =20
downloading the chunks of the message you need.

--=20
Eric Hodel - (e-mail address removed) - http://blog.segment7.net

A: Yes
Q: Is top-posting bad?
=97 Derek Milhous Zumsteg
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,539
Members
45,024
Latest member
ARDU_PROgrammER

Latest Threads

Top