Vote #64357
完了Fetching emails from an POP server
0%
説明
This is a patch to fetch emails from POP server instead of IMAP (based on IMAP handling code)
Copy attahced pop3.rb into +lib\redmine+ directory
require 'net/pop' module Redmine module POP3 class << self def check(pop_options={}, options={}) host = pop_options[:host] || '127.0.0.1' port = pop_options[:port] || '110' pop = Net::POP3.new(host,port) pop.start(pop_options[:username], pop_options[:password]) do |pop_session| pop_session.each_mail do |msg| message = msg.pop logger.debug "Receiving message: #{message.grep(/^Subject: /)}" if logger && logger.debug? if MailHandler.receive(message, options) logger.info "Message #{message.grep(/^Subject: /)} processed -- removing from server." if logger && logger.info? puts "#{message.grep(/^Subject: /)}" puts "--> Message processed and deleted from the server" msg.delete else puts "#{message.grep(/^Subject: /)}" puts "--> Message NOT processed -- leaving it on the server" logger.info "ERROR: Message #{message.grep(/^Subject: /)} can not be processed, leaving on the server." if logger && logger.info? end end end end private def logger RAILS_DEFAULT_LOGGER end end end end
and add the new task to email.rake file in lib\tasks
task :receive_pop => :environment do pop_options = {:host => ENV['host'], :port => ENV['port'], :username => ENV['username'], :password => ENV['password']} options = { :issue => {} } %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] } options[:allow_override] = ENV['allow_override'] if ENV['allow_override'] Redmine::POP3.check(pop_options, options) end
journals
+1
--------------------------------------------------------------------------------
this helps to fetch emails also from apop
lib/redmine/pop3.rb
<pre>
module Redmine
module POP3
class << self
def check(pop_options={}, options={})
host = pop_options[:host] || '127.0.0.1'
port = pop_options[:port] || '110'
+ apop = pop_potions[:apop] || false
- pop = Net::POP3.new(host,port)
+ pop = Net::POP3.APOP(apop).new(host,port)
...
</pre>
lib/tasks/email.rake
<pre>
task :receive_pop => :environment do
pop_options = {:host => ENV['host'],
:port => ENV['port'],
+ :apop => ENV['apop'],
:username => ENV['username'],
:password => ENV['password']}
options = { :issue => {} }
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
Redmine::POP3.check(pop_options, options)
end
</pre>
--------------------------------------------------------------------------------
very interested for this functionality too!
--------------------------------------------------------------------------------
Definite +1 for this issue to be rolled into the core. My company only allows POP3 accounts for some reason so this is essential
--------------------------------------------------------------------------------
Feature added in r3330.
--------------------------------------------------------------------------------