assigning directory path to downloaded email attachments

1 view
Skip to first unread message

étienne Lacoste

unread,
May 9, 2009, 11:30:32 AM5/9/09
to rubyonra...@googlegroups.com
I am trying to build a script that will download emails + their
attachments (from gmail server) and place them both into their
respective folders (one folder containing one email + its attachments).

I have managed to build a script (by putting together pieces from two
separate scripts) that gets the job 90% done, my problem is that I can't
get the attachments to save in the same folders as their respective
emails.

The folder structure where the emails are saved now is perfect, it is
just a question of getting the attachments to follow its respective
email into the folder.

If someone would have any tips for me I would be extremely grateful!

Here's some sample code of the attached script:

*************************************************************************

def save_to_disk(email) ## downloads emails
dir = File.join(MAIL_FOLDER,email.subject)
FileUtils.mkdir_p(dir)

filename = File.join(dir,email.subject)
file = File.open(filename,"w")
file.puts email.body
file.close

if email.multipart? then ## downloads attachments
email.parts.each do |m|
if m.disposition
filename = m.disposition_param('filename')
if filename[0,2]=='=?'
filename.gsub!(/=\?[^\?]+\?(.)\?([^\?]+)\?=$/){$1=='B' ?
$2.unpack('m*') : $2.unpack('M*')}
end
file = File.open(filename,'wb') {|f|f.write(m.body)}
puts filename
end
end
end
end

*************************************************************************

Attachments:
http://www.ruby-forum.com/attachment/3673/fetch-email_attachment_3.rb

--
Posted via http://www.ruby-forum.com/.

Frederick Cheung

unread,
May 9, 2009, 11:34:06 AM5/9/09
to Ruby on Rails: Talk


On May 9, 4:30 pm, "étienne Lacoste" <rails-mailing-l...@andreas-
s.net> wrote:
> I am trying to build a script that will download emails + their
> attachments (from gmail server) and place them both into their
> respective folders (one folder containing one email + its attachments).
>
> I have managed to build a script (by putting together pieces from two
> separate scripts) that gets the job 90% done, my problem is that I can't
> get the attachments to save in the same folders as their respective
> emails.
>
The filename in the mime headers is just a filename - you need to join
that with a directory name same as you do when saving the email
itself.

Fred

Étienne Lacoste

unread,
May 9, 2009, 12:11:34 PM5/9/09
to rubyonra...@googlegroups.com
Frederick Cheung wrote:
> On May 9, 4:30�pm, "�tienne Lacoste" <rails-mailing-l...@andreas-

Thanks for the reply. I have already tried doing that, but since I'm a
beginner with programming, I can't seem to get it done! I was hoping
maybe you could give me an example??

Frederick Cheung

unread,
May 9, 2009, 1:20:08 PM5/9/09
to Ruby on Rails: Talk


On May 9, 5:11 pm, "Étienne Lacoste" <rails-mailing-l...@andreas-
s.net> wrote:
> Frederick Cheung wrote:

> Thanks for the reply. I have already tried doing that, but since I'm a
> beginner with programming, I can't seem to get it done! I was hoping
> maybe you could give me an example??

Well you've already got
File.join(dir,email.subject)

for when you wanted a file in dir with the name email.subject, it's
exactly the same this time except that instead of email.subject it's
whatever you've extracted from the message part.

Fred

Étienne Lacoste

unread,
May 9, 2009, 5:42:09 PM5/9/09
to rubyonra...@googlegroups.com

I got it to work now! Thanks for the advice Fred.

Reply all
Reply to author
Forward
0 new messages