I’m writing a model for receiving incoming email from a remote imap server. The problem is, our server isn’t going to be running all of the time, and so I’m just going to set it up to check the inbox on each request (there won’t be many requests, it’s not a public site). Our rails server is running Windows. This is what I have so far, pretty much copied from http://wiki.rubyonrails.org/rails/pages/HowToReceiveEmailsWithActionMailer
def recieve(email) emailer = Emailer.find_by_address(email.sender) emailer.messages.create( :incoming => true, :subject => email.subject, :body => email.body, :time => email
) end
def send
not done yet
end
def self.check_mail imap = Net::IMAP.new(’ imap.shef.accept.uk’) imap.authenticate(‘LOGIN’,‘username’,‘password’) imap.select(‘INBOX’) imap.search([‘ALL’]).each do |message_id|
msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822']
MailReader.receive(msg)
imap.store(message_id, “+FLAGS”, [:Deleted])
end end
The problem is that because our server isn’t running all the time, I want to get the time the email was sent from the headers. This is very important as we have strict deadlines relating to replying to emails.
Any help would be much appreciated, -Nathan