# class Net::SMTP::Response

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

### Attributes

status[R]

The three digit reply code of the `SMTP` response

string[R]

The human readable reply text of the `SMTP` response

### Public Class Methods

new(status, string) click to toggle source

Creates a new instance of the `Response` class and sets the status and string attributes

    # File lib/net/smtp.rb, line 1004
    def initialize(status, string)
      @status = status
      @string = string
    end

parse(str) click to toggle source

Parses the received response and separates the reply code and the human readable reply text

    # File lib/net/smtp.rb, line 998
    def self.parse(str)
      new(str[0,3], str)
    end

### Public Instance Methods

capabilities() click to toggle source

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 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

continue?() click to toggle source

Determines whether the response received was a Positive Intermediate reply (3xx reply code)

    # File lib/net/smtp.rb, line 1028
    def continue?
      status_type_char() == '3'
    end

cram_md5_challenge() click to toggle source

Creates a CRAM-MD5 challenge. You can view more information on CRAM-MD5 on Wikipedia: en.wikipedia.org/wiki/CRAM-MD5

    # File lib/net/smtp.rb, line 1039
    def cram_md5_challenge
      @string.split(/ /)[1].unpack1('m')
    end

exception_class() click to toggle source

Determines whether there was an error and raises the appropriate error based on the reply code of the response

    # File 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

message() click to toggle source

The first line of the human readable reply text

    # File lib/net/smtp.rb, line 1033
    def message
      @string.lines.first
    end

status_type_char() click to toggle source

Takes the first digit of the reply code to determine the status type

    # File lib/net/smtp.rb, line 1016
    def status_type_char
      @status[0, 1]
    end

success?() click to toggle source

Determines whether the response received was a Positive Completion reply (2xx reply code)

    # File lib/net/smtp.rb, line 1022
    def success?
      status_type_char() == '2'
    end