class XmlConv::Util::PopMission

Attributes

content_type[RW]
host[RW]
pass[RW]
port[RW]
user[RW]

Public Instance Methods

poll(&block) click to toggle source
# File lib/xmlconv/util/polling_manager.rb, line 67
def poll(&block)
  # puts "PopMission starts polling host #{@host}:#{@port} u: #{@user} pw: #{@pass}"
  options = {
                    :address    => @host,
                    :port       => @port,
                    :user_name  => @user,
                    :password   => @pass,
                    :enable_ssl => true
    }
  ::Mail.defaults do retriever_method :pop3, options  end
  all_mails = ::Mail.delivery_method.is_a?(::Mail::TestMailer) ? ::Mail::TestMailer.deliveries : ::Mail.all
  all_mails.each do |mail|
      begin
        poll_message(mail, &block)
      ensure
        time = Time.now
        name = sprintf("%s.%s.%s", @user, time.strftime("%Y%m%d%H%M%S"), time.usec)
        FileUtils.mkdir_p(@backup_dir)
        path = File.join(@backup_dir, name)
        File.open(path, 'w') { |fh| fh.puts(mail) }
        mail.mark_for_delete = true
        # mail.delete # Not necessary with gem mail, as delete_after_find is set to true by default
      end
  end
end
poll_message(message, &block) click to toggle source
# File lib/xmlconv/util/polling_manager.rb, line 92
def poll_message(message, &block)
  if(message.multipart?)
    message.parts.each do |part|
      poll_message(part, &block)
    end
  elsif(/text\/xml/.match(message.content_type))
    filtered_transaction(message.decoded, sprintf('pop3:%s@%s:%s', @user, @host, @port), &block)
  end
end