Class: IMAPCleanse

Inherits:
IMAPClient show all
Defined in:
lib/imap_cleanse.rb

Overview

IMAPCleanse removes old messages from your IMAP mailboxes so you don’t have to!

aka part three of my Plan for Total Email Domination.

IMAPClient doesn’t remove messages you haven’t read nor messages you’ve flagged. See also IMAPFlag for automatic flagging goodness!

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from IMAPClient

#connect, #find_mailboxes, #log, #mark, run, #search

Constructor Details

#initialize(options) ⇒ IMAPCleanse

Creates a new IMAPCleanse from options.

Options include:

+:Age+:: Delete messages older than this many days ago

and all options from IMAPClient



38
39
40
41
# File 'lib/imap_cleanse.rb', line 38

def initialize(options)
  @before_date = (Time.now - 86400 * options[:Age]).imapdate
  super
end

Class Method Details

.process_args(args) ⇒ Object

Handles processing of args.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/imap_cleanse.rb', line 17

def self.process_args(args)
  extra_options = { :Age => [nil, 'Age option not set'] }

  super args, extra_options do |opts, options|
    opts.on("-a", "--age AGE",
            "Delete messages more than AGE days old",
            "Default: #{options[:Age].inspect}",
            "Options file name: Age", Integer) do |age|
      options[:Age] = age
    end
  end
end

Instance Method Details

#runObject

Removes read, unflagged messages from all selected mailboxes…



46
47
48
49
50
51
52
# File 'lib/imap_cleanse.rb', line 46

def run
  super "Cleansing read, unflagged messages older than #{@before_date}",
        [:Deleted] do
    @imap.expunge
    log "Expunged deleted messages"
  end
end