2. Email Processing I’ve
Seen
• Sometimes done with a catch all alias on
the mail server
• Store emails as files on disk
• Implement a file scanner to read and
process messages
15. Write Your EM Server
class MySmtpServer < EM::Protocols::SmtpServer
def initialize(*args)
super
@parms[:chunksize] = 1024
end
16. Specify Who Can
Receive
Return True for OK
def receive_recipient(recipient)
!!User.first(:email => recipient)
end
17. Tell It What to Do
def receive_data_chunk(data)
# Do stuff with data
# collect it in an ivar
# collect in a file
true
end
18. Once The Message Is
Complete
def receive_message
# Do Stuff if you’ve collected in an ivar
# Or sent to a file
# Clear ivar
true # false rejects message
end
19. Fire It Up
EM.run {
EM.start_server quot;0.0.0.0quot;, 2525, MySmtpServer
}