étienne Lacoste
2009-May-09 15:30 UTC
assigning directory path to downloaded email attachments
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
2009-May-09 15:34 UTC
Re: assigning directory path to downloaded email attachments
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
2009-May-09 16:11 UTC
Re: assigning directory path to downloaded email attachments
Frederick Cheung wrote:> 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. > > FredThanks 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?? -- Posted via http://www.ruby-forum.com/.
Frederick Cheung
2009-May-09 17:20 UTC
Re: assigning directory path to downloaded email attachments
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