Class: Mailpot::Smtp

Inherits:
EventMachine::Protocols::SmtpServer
  • Object
show all
Defined in:
lib/mailpot/smtp.rb

Instance Method Summary collapse

Instance Method Details

#current_messageObject



4
5
6
# File 'lib/mailpot/smtp.rb', line 4

def current_message
 @current_message ||= {}
end

#get_server_domainObject



17
18
19
# File 'lib/mailpot/smtp.rb', line 17

def get_server_domain
 Socket.gethostbyname(Socket.gethostname).first
end

#get_server_greetingObject



13
14
15
# File 'lib/mailpot/smtp.rb', line 13

def get_server_greeting
 "ESMTP Sendmail 8.12.9/8.12.9;"
end

#receive_data_chunk(lines) ⇒ Object



31
32
33
34
35
# File 'lib/mailpot/smtp.rb', line 31

def receive_data_chunk(lines)
 current_message[:source] ||= ""
 current_message[:source] += lines.join("\n")
 true
end

#receive_messageObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/mailpot/smtp.rb', line 37

def receive_message
 port, ip = Socket.unpack_sockaddr_in(get_peername)
 current_message[:ip] = ip
 current_message[:port] = port
 Mailpot::Mail.add_message current_message
 puts "==> SMTP: Received message from '#{current_message[:sender]}' (#{current_message[:source].length} bytes)"
 true
rescue
 puts "*** Error receiving message: #{current_message.inspect}"
 puts "    Exception: #{$!}"
 puts "    Backtrace:"
 $!.backtrace.each do |line|
  puts "      #{line}"
 end
 puts "    Please submit this as an issue at https://github.com/mjezorek/Mailpot/issues"
 false
ensure
 @current_message = nil
end

#receive_recipient(recipient) ⇒ Object



25
26
27
28
29
# File 'lib/mailpot/smtp.rb', line 25

def receive_recipient(recipient)
 current_message[:recipients] ||= []
 current_message[:recipients] << recipient
 true
end

#receive_resetObject



8
9
10
11
# File 'lib/mailpot/smtp.rb', line 8

def receive_reset
 @current_message = nil
 true
end

#receive_sender(sender) ⇒ Object



21
22
23
# File 'lib/mailpot/smtp.rb', line 21

def receive_sender(sender)
 current_message[:sender] = sender
end