class Net::IMAP::ESearchResult
一个“扩展搜索”响应 (ESEARCH)。 ESearchResult 应该由 IMAP#search, IMAP#uid_search, IMAP#sort, 和 IMAP#uid_sort 返回(而不是 SearchResult),在以下任何一种情况下:
-
为
IMAP#search或IMAP#uid_search指定了返回选项。服务器必须支持允许 RFC4466return选项的搜索扩展,例如ESEARCH、PARTIAL或IMAP4rev2。 -
为
IMAP#sort或IMAP#uid_sort指定了返回选项。服务器必须支持ESORT扩展 [RFC5267]。注意:
IMAP#search和IMAP#uid_search尚不支持ESORT。 -
服务器支持
IMAP4rev2但不支持IMAP4rev1,或者已启用IMAP4rev2。IMAP4rev2需要ESEARCH结果。
请注意,某些服务器可能会声称支持需要 ESEARCH 结果的搜索扩展(例如 PARTIAL),但当指定 return 选项时,仍然只返回 SEARCH 结果。
一些搜索扩展可能会导致服务器在初始化命令完成后发送 ESearchResult 响应。使用 IMAP#add_response_handler 来处理这些响应。
属性
导致返回此响应的命令的标记字符串。
当为 nil 时,此响应不是由特定命令引起的。
指示此响应中的 data 是指 UID (当为 true 时) 还是消息序列号 (当为 false 时)。
指示此响应中的 data 是指 UID (当为 true 时) 还是消息序列号 (当为 false 时)。
公共类方法
# 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
公共实例方法
包含满足搜索条件的所有消息序列号或 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
包含满足搜索条件的消息序列号或 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
当 all 或 partial 包含消息序列号或 UID 的 SequenceSet 时,to_a 将该集合作为整数数组返回。
当 all 和 partial 都为 nil 时,要么是因为服务器未返回任何结果,要么是因为 IMAP#search 的 RETURN 选项中未包含 ALL 和 PARTIAL,to_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