Class: MList::EmailServer::Imap
- Inherits:
-
Base
- Object
- Base
- MList::EmailServer::Imap
show all
- Defined in:
- lib/mlist/email_server/imap.rb
Instance Attribute Summary
Attributes inherited from Base
#settings
Instance Method Summary
collapse
Methods inherited from Base
#generate_message_id, #receive, #receiver
Constructor Details
#initialize(settings) ⇒ Imap
Returns a new instance of Imap.
7
8
9
10
11
12
13
14
|
# File 'lib/mlist/email_server/imap.rb', line 7
def initialize(settings)
super(settings)
@imap = Net::IMAP.new(
settings[:server],
settings[:port],
settings[:ssl]
)
end
|
Instance Method Details
#archive_message_id(id) ⇒ Object
24
25
26
27
|
# File 'lib/mlist/email_server/imap.rb', line 24
def archive_message_id(id)
@imap.copy(id, settings[:archive_folder])
@imap.store(id, '+FLAGS', [:Deleted])
end
|
#connect ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'lib/mlist/email_server/imap.rb', line 29
def connect
@imap.login(settings[:username], settings[:password])
begin
yield
ensure
@imap.close
end
end
|
#deliver(tmail) ⇒ Object
16
17
18
|
# File 'lib/mlist/email_server/imap.rb', line 16
def deliver(tmail)
raise "Mail delivery is not presently supported by the Imap server. Please use the '#{MList::EmailServer::Default.name}' type."
end
|
#execute ⇒ Object
20
21
22
|
# File 'lib/mlist/email_server/imap.rb', line 20
def execute
connect { process_folders }
end
|
#process_folder(folder) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/mlist/email_server/imap.rb', line 44
def process_folder(folder)
@imap.select(folder)
@imap.search(['ALL']).each do |message_id|
process_message_id(message_id)
archive_message_id(message_id)
end
end
|
#process_folders ⇒ Object
38
39
40
41
42
|
# File 'lib/mlist/email_server/imap.rb', line 38
def process_folders
Array(settings[:source_folders]).each do |folder|
process_folder(folder)
end
end
|
#process_message(content) ⇒ Object
57
58
59
|
# File 'lib/mlist/email_server/imap.rb', line 57
def process_message(content)
receive(TMail::Mail.parse(content))
end
|
#process_message_id(id) ⇒ Object
52
53
54
55
|
# File 'lib/mlist/email_server/imap.rb', line 52
def process_message_id(id)
content = @imap.fetch(id, 'RFC822')[0].attr['RFC822']
process_message(content)
end
|