Showing posts with label Download attachments from gamil by using tmail. Show all posts
Showing posts with label Download attachments from gamil by using tmail. Show all posts

Tuesday, November 22, 2011

How can i download every attachment from gmail

Download attachments from gamil by using tmail.
#! /usr/bin/ruby

require 'net/imap'
require 'rubygems'
require 'tmail'
require 'fileutils'
require 'ftools'


# This is a convenience monkey patch
class Net::IMAP
    def uid_move(uid, mailbox)
      uid_copy(uid, mailbox)
      uid_store(uid, "+FLAGS", [:Deleted])
    end
end


server = 'imap.gmail.com'
username = 'gmail email id'
password = 'gmail password'
folder = 'INBOX'
movefolder = 'downloaded_resumes'
downloadfolder = "Folder_"


imap = Net::IMAP.new(server, 993, true)
imap.login(username, password)
imap.select(folder)


#puts imap.uid_search(["NOT", "SEEN"]).length
count=0
imap.uid_search(["NOT", "SEEN"]).reverse.each do |uid|
file_name="resume_"
no_of_resume=1
# save_attachment
  mail = TMail::Mail.parse( imap.uid_fetch(uid, 'RFC822').first.attr['RFC822'])
  if ! mail.attachments.blank?

#folder dynamic creation
if ((count%no_of_resume)==0 )
dirname="Resume/resume#{count/no_of_resume +1}"
File.makedirs(dirname)
else
dirname="Resume/resume#{count/no_of_resume +1}"
end
#folder dynamic creation

    File.open(mail.attachments.first.original_filename,"w+") { |local_file|
     local_file << mail.attachments.first.gets(nil) 
#puts local_file.name.inspect
path=local_file.path
filename=File.basename(path) 
extname=File.extname(filename)
loc="resume_#{count}#{extname}"
File.rename(filename, loc)
newfilename=File.basename(loc)
FileUtils.mv(newfilename, "Resume/resume#{count/no_of_resume +1}") # Move file  one place  to anouther place
count=count +1
    }
  end


  # archive mail to mailbox
  imap.uid_move(uid,movefolder)
end
imap.expunge
imap.logout


If you any quries mail me(palpandi26@gmail.com)