This class represents a response received by the SMTP
server. Instances of this class are created by the SMTP
class; they should not be directly created by the user. For more information on SMTP
responses, view Section 4.2 of RFC 5321
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1004
def initialize(status, string)
@status = status
@string = string
end
Creates a new instance of the Response
class and sets the status and string attributes
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 998
def self.parse(str)
new(str[0,3], str)
end
Parses the received response and separates the reply code and the human readable reply text
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1047
def capabilities
return {} unless @string[3, 1] == '-'
h = {}
@string.lines.drop(1).each do |line|
k, *v = line[4..-1].chomp.split
h[k] = v
end
h
end
Returns a hash of the human readable reply text in the response if it is multiple lines. It does not return the first line. The key of the hash is the first word the value of the hash is an array with each word thereafter being a value in the array
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1028
def continue?
status_type_char() == '3'
end
Determines whether the response received was a Positive Intermediate reply (3xx reply code)
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1039
def cram_md5_challenge
@string.split(/ /)[1].unpack1('m')
end
Creates a CRAM-MD5 challenge. You can view more information on CRAM-MD5 on Wikipedia: en.wikipedia.org/wiki/CRAM-MD5
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1059
def exception_class
case @status
when /\A4/ then SMTPServerBusy
when /\A50/ then SMTPSyntaxError
when /\A53/ then SMTPAuthenticationError
when /\A5/ then SMTPFatalError
else SMTPUnknownError
end
end
Determines whether there was an error and raises the appropriate error based on the reply code of the response
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1033
def message
@string.lines.first
end
The first line of the human readable reply text
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1016
def status_type_char
@status[0, 1]
end
Takes the first digit of the reply code to determine the status type
# File tmp/rubies/ruby-2.6.10/lib/net/smtp.rb, line 1022
def success?
status_type_char() == '2'
end
Determines whether the response received was a Positive Completion reply (2xx reply code)