Sha256: 7b4b9ccd1649279e7cdea7b51cba54e3df15f0bdfb87d08fa8e2f3ff03a0dd9d

Contents?: true

Size: 1.57 KB

Versions: 15

Compression:

Stored size: 1.57 KB

Contents

module Astrotrain
  # Logs details of each incoming message.  
  class LoggedMail
    include DataMapper::Resource

    class << self
      attr_accessor :log_path, :log_processed
    end

    # Enabling this will save records for every processed email, not just the errored emails.
    self.log_processed = false
    self.log_path      = File.join(Astrotrain.root, 'messages')

    property :id,            Serial
    property :mapping_id,    Integer, :index => true
    property :message_id,    String,  :index => true, :size => 255, :length => 1..255
    property :sender,        String,  :index => true, :size => 255, :length => 1..255
    property :recipient,     String,  :index => true, :size => 255, :length => 1..255
    property :subject,       String,  :index => true, :size => 255, :length => 1..255
    property :mail_file,     String,  :size => 255, :length => 1..255
    property :created_at,    DateTime
    property :delivered_at,  DateTime
    property :error_message, Text

    belongs_to :mapping

    def self.from(message, file = nil)
      logged = new
      begin
        logged.message_id = message.message_id
        logged.sender     = Message.parse_email_addresses(message.sender).first
        logged.subject    = message.subject
        logged.mail_file  = file if file
      end
      if !block_given? || yield(logged)
        begin
          logged.save
          if logged.delivered_at && File.exist?(logged.mail_file.to_s)
            FileUtils.rm_rf logged.mail_file
          end
        rescue
          puts $!.inspect
        end
      end
      logged
    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
entp-astrotrain-0.4.0 lib/astrotrain/logged_mail.rb
entp-astrotrain-0.4.1 lib/astrotrain/logged_mail.rb
entp-astrotrain-0.4.2 lib/astrotrain/logged_mail.rb
entp-astrotrain-0.4.3 lib/astrotrain/logged_mail.rb
astrotrain-0.5.4 lib/astrotrain/logged_mail.rb
astrotrain-0.5.3 lib/astrotrain/logged_mail.rb
astrotrain-0.5.2 lib/astrotrain/logged_mail.rb
astrotrain-0.5.1 lib/astrotrain/logged_mail.rb
astrotrain-0.5.0 lib/astrotrain/logged_mail.rb
astrotrain-0.4.5 lib/astrotrain/logged_mail.rb
astrotrain-0.4.4 lib/astrotrain/logged_mail.rb
astrotrain-0.4.3 lib/astrotrain/logged_mail.rb
astrotrain-0.4.2 lib/astrotrain/logged_mail.rb
astrotrain-0.4.1 lib/astrotrain/logged_mail.rb
astrotrain-0.4.0 lib/astrotrain/logged_mail.rb