class SMTP::Session
Attributes
active[RW]
connection[RW]
domain[RW]
forward_path[RW]
host[RW]
message[RW]
reverse_path[RW]
Public Class Methods
new(connection, host)
click to toggle source
# File lib/drillmail/smtp.rb, line 35 def initialize(connection, host) @connection = connection @host = host @active = true @domain = nil setup_session end
Public Instance Methods
process(request_string)
click to toggle source
# File lib/drillmail/smtp.rb, line 68 def process(request_string) if request_string request_array = request_string.split(' ') { command: request_array.shift.to_sym, body: request_array.join(' ') } else { command: :NOOP, body: '' } end end
route(request)
click to toggle source
# File lib/drillmail/smtp.rb, line 80 def route(request) puts "Requesting: #{request[:command]} #{request[:body]}" if commands.key?(request[:command]) response = commands[request[:command]].call(request[:body]) else response = reply(500) end puts "Responding: #{response}" response end
run()
click to toggle source
# File lib/drillmail/smtp.rb, line 49 def run begin @connection.puts reply(220, "#{@host} Simple Mail Transfer") while @active @connection.sync = true request = @connection.gets response = route(process(request)) @connection.puts "#{response}\r\n" end rescue => e @connection.puts reply(421, e) puts e, e.backtrace ensure @connection.shutdown(:RDWR) @connection.close end end
setup_session()
click to toggle source
# File lib/drillmail/smtp.rb, line 43 def setup_session @reverse_path = '' @forward_path = '' @message = [] end