é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