Class: MaildirAccount
- Inherits:
-
Object
- Object
- MaildirAccount
- Defined in:
- lib/feed2imap/maildir.rb
Constant Summary collapse
- MYHOSTNAME =
Socket.gethostname
- @@seq_num =
0
Instance Attribute Summary collapse
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Instance Method Summary collapse
- #cleanup(folder, dryrun = false) ⇒ Object
- #putmail(folder, mail, date = Time::now) ⇒ Object
- #to_s ⇒ Object
- #updatemail(folder, mail, idx, date = Time::now, reupload_if_updated = true) ⇒ Object
Instance Attribute Details
#uri ⇒ Object (readonly)
Returns the value of attribute uri.
30 31 32 |
# File 'lib/feed2imap/maildir.rb', line 30 def uri @uri end |
Instance Method Details
#cleanup(folder, dryrun = false) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/feed2imap/maildir.rb', line 57 def cleanup(folder, dryrun = false) dir = folder_dir(folder) puts "-- Considering #{dir}:" guarantee_maildir(dir) del_count = 0 recent_time = Time.now() - (3 * 24 * 60 * 60) # 3 days Dir[File.join(dir, 'cur', '*')].each do |fn| flags = maildir_file_info_flags(fn) # don't consider not-seen, flagged, or recent messages mtime = File.mtime(fn) next if (not flags.index('S') or flags.index('F') or mtime > recent_time) mail = File.open(fn) do |f| RMail::Parser.read(f) end subject = mail.header['Subject'] if dryrun puts "To remove: #{subject} #{mtime}" else puts "Removing: #{subject} #{mtime}" File.delete(fn) end del_count += 1 end puts "-- Deleted #{del_count} messages" return del_count end |
#putmail(folder, mail, date = Time::now) ⇒ Object
32 33 34 35 36 |
# File 'lib/feed2imap/maildir.rb', line 32 def putmail(folder, mail, date = Time::now) (folder_dir(folder), date, nil) do |f| f.puts(mail) end end |
#to_s ⇒ Object
53 54 55 |
# File 'lib/feed2imap/maildir.rb', line 53 def to_s uri.to_s end |
#updatemail(folder, mail, idx, date = Time::now, reupload_if_updated = true) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/feed2imap/maildir.rb', line 38 def updatemail(folder, mail, idx, date = Time::now, reupload_if_updated = true) dir = folder_dir(folder) guarantee_maildir(dir) mail_files = find_mails(dir, idx) if mail_files.length > 0 # get the info from the first result and delete everything info = maildir_file_info(mail_files[0]) mail_files.each { |f| File.delete(File.join(dir, f)) } elsif not reupload_if_updated # mail not present, and we don't want to re-upload it return end (dir, date, info) { |f| f.puts(mail) } end |