Patch #2420

Fetching emails from an POP server

Added by Alex Popov almost 9 years ago. Updated almost 8 years ago.

Status:ClosedStart date:2008-12-30
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:Email receiving
Target version:1.0.0 (RC)

Description

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

email.rake Magnifier - modified email.rake file (lib\tasks) (4.82 KB) Alex Popov, 2008-12-30 23:59

pop3.rb Magnifier - new pop3.rb file (place into lib\redmine) (2.07 KB) Alex Popov, 2008-12-30 23:59

Associated revisions

Revision 3330
Added by Jean-Philippe Lang almost 8 years ago

Adds a rake task to receive emails from a POP3 server (#2420).
See:

rake -D redmine:email:receive_pop3

History

#1 Updated by Chaoqun Zou over 8 years ago

+1

#2 Updated by dct abuyz over 8 years ago

this helps to fetch emails also from apop

lib/redmine/pop3.rb

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)

...

lib/tasks/email.rake

    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

#3 Updated by Jean-Philippe Lang almost 8 years ago

  • Category changed from Email notifications to Email receiving

#4 Updated by Mélanie Gault almost 8 years ago

very interested for this functionality too!

#5 Updated by Jeffrey Jones almost 8 years ago

Definite +1 for this issue to be rolled into the core. My company only allows POP3 accounts for some reason so this is essential

#6 Updated by Jean-Philippe Lang almost 8 years ago

  • Status changed from New to Closed
  • Target version set to 1.0.0 (RC)

Feature added in r3330.

Also available in: Atom PDF