From d438f3947c40041c93b4ecd990b695089b6877e0 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Sat, 5 Jan 2013 00:14:08 +0100 Subject: [PATCH] Fixed #38 - added folder option. --- .../app/controllers/_channel/email.js.coffee | 11 +++++++++-- app/models/channel/imap.rb | 6 +++++- app/models/channel/pop3.rb | 15 ++++++++++++--- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_channel/email.js.coffee b/app/assets/javascripts/app/controllers/_channel/email.js.coffee index b49fbd9c2..10dad4daa 100644 --- a/app/assets/javascripts/app/controllers/_channel/email.js.coffee +++ b/app/assets/javascripts/app/controllers/_channel/email.js.coffee @@ -371,14 +371,20 @@ class App.ChannelEmailInboundEdit extends App.ControllerModal render: (data = {}) -> + if !data['options'] + data['options'] = {} + data['options']['ssl'] = true + data['active'] = true + configure_attributes = [ { name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } , class: 'span4', default: data['adapter'] }, { name: 'host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, class: 'span4', autocapitalize: false, default: (data['options']&&data['options']['host']) }, { name: 'user', display: 'User', tag: 'input', type: 'text', limit: 120, null: false, class: 'span4', autocapitalize: false, default: (data['options']&&data['options']['user']) }, { name: 'password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, class: 'span4', autocapitalize: false, default: (data['options']&&data['options']['password']) }, - { name: 'ssl', display: 'SSL', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' } , class: 'span4', default: (data['options']&&data['options']['ssl']) }, + { name: 'ssl', display: 'SSL', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, class: 'span4', default: (data['options']&&data['options']['ssl']) }, + { name: 'folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, class: 'span4', autocapitalize: false, default: (data['options']&&data['options']['folder']) }, { name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, filter: @edit_form, nulloption: false, relation: 'Group', class: 'span4', default: data['group_id'] }, - { name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' } , class: 'span4', default: data['active'] }, + { name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' } , translate: true, class: 'span4', default: data['active'] }, ] if @object @html App.view('generic/admin/edit')( @@ -416,6 +422,7 @@ class App.ChannelEmailInboundEdit extends App.ControllerModal user: params['user'], password: params['password'], ssl: params['ssl'], + folder: params['folder'], }, active: params['active'], ) diff --git a/app/models/channel/imap.rb b/app/models/channel/imap.rb index 31d8110cd..80d13e1b6 100644 --- a/app/models/channel/imap.rb +++ b/app/models/channel/imap.rb @@ -24,7 +24,11 @@ class Channel::IMAP < Channel::EmailParser end imap.login( channel[:options][:user], channel[:options][:password] ) end - imap.select('INBOX') + if channel[:options][:folder].empty? + imap.select('INBOX') + else + imap.select( channel[:options][:folder] ) + end count = 0 count_all = imap.search(['ALL']).count imap.search(['ALL']).each do |message_id| diff --git a/app/models/channel/pop3.rb b/app/models/channel/pop3.rb index f974bfaa1..461fc38c6 100644 --- a/app/models/channel/pop3.rb +++ b/app/models/channel/pop3.rb @@ -4,10 +4,19 @@ class Channel::POP3 < Channel::EmailParser include UserInfo def fetch (channel) - puts "fetching pop3 (#{channel[:options][:host]}/#{channel[:options][:user]})" + ssl = false + port = 110 + if channel[:options][:ssl].to_s == 'true' + ssl = true + port = 995 + end - pop = Net::POP3.new( channel[:options][:host], 995 ) - pop.enable_ssl + puts "fetching pop3 (#{channel[:options][:host]}/#{channel[:options][:user]} port=#{port},ssl=#{ssl})" + + pop = Net::POP3.new( channel[:options][:host], port ) + if ssl + pop.enable_ssl + end pop.start( channel[:options][:user], channel[:options][:password] ) count = 0 count_all = pop.mails.size