add notification system
[god.git] / lib / god / contacts / email.rb
blob372b390da015d014fc6ae4fb6a601acd5de09e4b
1 require 'time'
2 require 'net/smtp'
4 module God
5   module Contacts
6     
7     class Email < Contact
8       class << self
9         attr_accessor :message_settings, :delivery_method, :server_settings, :format
10       end
11       
12       self.message_settings = {:from => 'god@example.com'}
13       
14       self.delivery_method = :smtp
15       
16       self.server_settings = {}
17       
18       self.format = lambda do |name, email, message, time, priority, category|
19         <<-EOF
20 From: god <#{self.message_settings[:from]}>
21 To: #{name} <#{email}>
22 Subject: [god] #{message}
23 Date: #{Time.now.httpdate}
24 Message-Id: <unique.message.id.string@example.com>
26 Message: #{message}
27 Priority: #{priority}
28 Category: #{category}
29         EOF
30       end
31       
32       attr_accessor :email
33       
34       def valid?
35         valid = true
36         valid &= complain("Attribute 'email' must be specified", self) if self.email.nil?
37         valid
38       end
39       
40       def notify(message, time, priority, category)
41         begin
42           body = Email.format.call(self.name, self.email, message, time, priority, category)
43           
44           puts body
45           puts
46           # Net::SMTP.start('localhost', 25) do |smtp|
47           #   smtp.send_message body, Email.message_settings[:from], self.email
48           # end
49         rescue => e
50           puts e.message
51           puts e.backtrace.join("\n")
52         end
53       end
54     end
55     
56   end
57 end