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)
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
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.
On May 9, 5:11 pm, “Étienne Lacoste” <rails-mailing-l…@andreas- s.net> wrote:
Frederick C. 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.
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
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??