【问题标题】:perl Net::IMAP::Client: how to express complex search queryperl Net::IMAP::Client:如何表达复杂的搜索查询
【发布时间】:2021-11-11 00:30:20
【问题描述】:

我正在使用Net::IMAP::Client 来清理我的提供商主机上的邮件文件夹。 首先,我搜索符合某些条件的消息:

文档说:

搜索($criteria, $sort, $charset)

执行“SEARCH”或“SORT”IMAP 命令(取决于是否 $sort 是 undef) 并将结果作为数组引用返回 包含消息 ID-s。

请注意,如果您使用 $sort 和 IMAP 服务器没有这个能力,这个方法会失败。采用 调查的“能力”。

  • $标准

    可以是字符串,在这种情况下,它按字面意思传递给 IMAP 命令(可以是“SEARCH”或“SORT”)。

它也可以是一个哈希引用,在这种情况下键 => 值是 收集到 > 字符串中,值被正确引用,即:

{ subject => 'foo',
  from    => 'bar' }

将转换为:

'SUBJECT "foo" FROM "bar"' 

这是一个有效的 IMAP SEARCH 查询。

如果要检索所有消息(不搜索 条件)然后在此处传递 'ALL'。

我需要搜索主题与“this”或“that”匹配的所有邮件。

这是我尝试过的:

{ subject => 'this', subject => 'that' }

但它只正确返回主题行中带有“that”的邮件。

有什么建议吗?

【问题讨论】:

    标签: perl imap


    【解决方案1】:

    在散列中,每个键都是唯一的。 { subject => 'this', subject => 'that' } 结果与{ subject => 'that' } 相同,这解释了为什么您只收到以that 开头的电子邮件。

    我建议使用字符串而不是哈希引用,并使用OR 组合多个SUBJECT

    "OR SUBJECT this SUBJECT that"
    

    (如果thisthat 包含空格,请使用引号)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多