class Net::SMTP::Response

这个类表示 SMTP 服务器收到的响应。 此类的实例由 SMTP 类创建;用户不应直接创建它们。 有关 SMTP 响应的更多信息,请查看 RFC 5321 第 4.2 节

属性

status[R]

SMTP 响应的三位数字回复代码

string[R]

SMTP 响应的人类可读回复文本

公共类方法

new(status, string) 点击切换源代码

创建 Response 类的新实例,并设置状态和字符串属性

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1059
def initialize(status, string)
  @status = status
  @string = string
end
parse(str) 点击切换源代码

解析接收到的响应,并分离回复代码和人类可读的回复文本

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

公共实例方法

capabilities() 点击切换源代码

如果响应是多行的,则返回响应中人类可读回复文本的哈希。它不返回第一行。哈希的键是第一个单词,哈希的值是一个数组,其中每个后续单词都是数组中的一个值

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1102
def capabilities
  return {} unless @string[3, 1] == '-'
  h = {}
  @string.lines.drop(1).each do |line|
    k, *v = line[4..-1].split(' ')
    h[k] = v
  end
  h
end
continue?() 点击切换源代码

确定接收到的响应是否为肯定的中间回复(3xx 回复代码)

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1083
def continue?
  status_type_char() == '3'
end
cram_md5_challenge() 点击切换源代码

创建 CRAM-MD5 质询。您可以在 Wikipedia 上查看有关 CRAM-MD5 的更多信息: en.wikipedia.org/wiki/CRAM-MD5

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1094
def cram_md5_challenge
  @string.split(/ /)[1].unpack1('m')
end
exception_class() 点击切换源代码

确定是否存在错误,并根据响应的回复代码引发相应的错误

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1114
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() 点击切换源代码

人类可读回复文本的第一行

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1088
def message
  @string.lines.first
end
status_type_char() 点击切换源代码

获取回复代码的第一位数字以确定状态类型

# File net-smtp-0.5.0/lib/net/smtp.rb, line 1071
def status_type_char
  @status[0, 1]
end
success?() 点击切换源代码

确定接收到的响应是否为肯定的完成回复(2xx 回复代码)

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