class Net::IMAP::ESearchResult

一个“扩展搜索”响应 (ESEARCH)。 ESearchResult 应该由 IMAP#search, IMAP#uid_search, IMAP#sort, 和 IMAP#uid_sort 返回(而不是 SearchResult),在以下任何一种情况下:

  • IMAP#searchIMAP#uid_search 指定了返回选项。服务器必须支持允许 RFC4466 return 选项的搜索扩展,例如 ESEARCHPARTIALIMAP4rev2

  • IMAP#sortIMAP#uid_sort 指定了返回选项。服务器必须支持 ESORT 扩展 [RFC5267]

    注意: IMAP#searchIMAP#uid_search 尚不支持 ESORT

  • 服务器支持 IMAP4rev2支持 IMAP4rev1,或者已启用 IMAP4rev2IMAP4rev2 需要 ESEARCH 结果。

请注意,某些服务器可能会声称支持需要 ESEARCH 结果的搜索扩展(例如 PARTIAL),但当指定 return 选项时,仍然只返回 SEARCH 结果。

一些搜索扩展可能会导致服务器在初始化命令完成后发送 ESearchResult 响应。使用 IMAP#add_response_handler 来处理这些响应。

属性

data[R]

搜索返回数据,以 [name, value] 对的数组形式表示。大多数返回数据与具有相同名称的搜索 return 选项相对应。

请注意,某些返回数据名称可能会在每个结果中使用多次。

可以通过 minmaxallcountmodseq 和其他方法更简单地检索此数据。

tag[R]

导致返回此响应的命令的标记字符串。

当为 nil 时,此响应不是由特定命令引起的。

uid[R]

指示此响应中的 data 是指 UID (当为 true 时) 还是消息序列号 (当为 false 时)。

uid?[R]

指示此响应中的 data 是指 UID (当为 true 时) 还是消息序列号 (当为 false 时)。

公共类方法

new(tag: nil, uid: nil, data: nil) 点击切换源码
调用父类方法
# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 29
def initialize(tag: nil, uid: nil, data: nil)
  tag  => String       | nil; tag = -tag if tag
  uid  => true | false | nil; uid = !!uid
  data => Array        | nil; data ||= []; data.freeze
  super
end

公共实例方法

all → 序列集或 nil 点击切换源码

包含满足搜索条件的所有消息序列号或 UID 的 SequenceSet

当关联的搜索命令没有结果,或者当未指定 ALL 返回选项但指定了其他返回选项时,返回 nil

需要 ESEARCH [RFC4731]IMAP4rev2 [RFC9051]

另请参阅: to_a

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 110
def all;        data.assoc("ALL")&.last        end
count → 整数或 nil 点击切换源码

返回满足搜索条件的消息数。

当关联的搜索命令没有结果,或者当未指定 COUNT 返回选项时,返回 nil

需要 ESEARCH [RFC4731]IMAP4rev2 [RFC9051]

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 121
def count;      data.assoc("COUNT")&.last      end
max → 整数或 nil 点击切换源码

满足搜索条件的最高消息编号/UID。

当关联的搜索命令没有结果,或者当未指定 MAX 返回选项时,返回 nil

需要 ESEARCH [RFC4731]IMAP4rev2 [RFC9051]

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 96
def max;        data.assoc("MAX")&.last        end
min → 整数或 nil 点击切换源码

满足搜索条件的最低消息编号/UID。

当关联的搜索命令没有结果,或者当未指定 MIN 返回选项时,返回 nil

需要 ESEARCH [RFC4731]IMAP4rev2 [RFC9051]

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 85
def min;        data.assoc("MIN")&.last        end
modseq → 整数或 nil 点击切换源码

返回的所有消息的最高 mod-sequence

当关联的搜索命令没有结果,或者当未指定 MODSEQ 搜索条件时,返回 nil

请注意,MODSEQ 没有搜索 return 选项。只要启用了 CONDSTORE 扩展,它就会被返回。使用 MODSEQ 搜索条件将隐式启用 CONDSTORE

需要 CONDSTORE [RFC7162]ESEARCH [RFC4731]

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 136
def modseq;     data.assoc("MODSEQ")&.last     end
partial → PartialResult 或 nil 点击切换源码

包含满足搜索条件的消息序列号或 UID 子集的 PartialResult

需要 PARTIAL [RFC9394]CONTEXT=SEARCH/CONTEXT=SORT [RFC5267]

另请参阅: to_a

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 176
def partial;    data.assoc("PARTIAL")&.last    end
to_a → 整数数组 点击切换源码

allpartial 包含消息序列号或 UID 的 SequenceSet 时,to_a 将该集合作为整数数组返回。

allpartial 都为 nil 时,要么是因为服务器未返回任何结果,要么是因为 IMAP#searchRETURN 选项中未包含 ALLPARTIALto_a 返回一个空数组。

请注意,SearchResult 也实现了 to_a,因此可以在不检查服务器返回的是 SEARCH 还是 ESEARCH 数据的情况下使用它。

# File net-imap-0.5.4/lib/net/imap/esearch_result.rb, line 47
def to_a; all&.numbers || partial&.to_a || [] end