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