class MailCatcher::Smtp
Public Instance Methods
current_message()
click to toggle source
# File lib/mail_catcher/smtp.rb, line 17 def current_message @current_message ||= {} end
process_mail_from(sender)
click to toggle source
We override EM's mail from processing to allow multiple mail-from commands per [RFC 2821](tools.ietf.org/html/rfc2821#section-4.1.1.2)
Calls superclass method
# File lib/mail_catcher/smtp.rb, line 8 def process_mail_from sender if @state.include? :mail_from @state -= [:mail_from, :rcpt, :data] receive_reset end super end
receive_data_chunk(lines)
click to toggle source
# File lib/mail_catcher/smtp.rb, line 37 def receive_data_chunk(lines) current_message[:source] ||= "" lines.each do |line| current_message[:source] << line << "\r\n" end true end
receive_message()
click to toggle source
# File lib/mail_catcher/smtp.rb, line 45 def receive_message MailCatcher::Mail.add_message current_message puts "==> SMTP: Received message from '#{current_message[:sender]}' (#{current_message[:source].length} bytes)" true rescue => exception MailCatcher.log_exception("Error receiving message", @current_message, exception) false ensure @current_message = nil end
receive_recipient(recipient)
click to toggle source
# File lib/mail_catcher/smtp.rb, line 31 def receive_recipient(recipient) current_message[:recipients] ||= [] current_message[:recipients] << recipient true end
receive_reset()
click to toggle source
# File lib/mail_catcher/smtp.rb, line 21 def receive_reset @current_message = nil true end
receive_sender(sender)
click to toggle source
# File lib/mail_catcher/smtp.rb, line 26 def receive_sender(sender) current_message[:sender] = sender true end