Ruby/Rails: 获取所有可用imap文件夹列表

3

我是Ruby/Rails的新手,一直在研究Net::IMAP。我想要做的是连接到我的IMAP帐户并遍历所有的IMAP文件夹。如果我使用我的ISP的Webmail客户端,我会看到所有的文件夹都存在于一个名为“INBOX”的信箱下。

imap = Net::IMAP.new(@server_name, @server_port)
imap.login(@username, @password)

imap.select("INBOX")

# obtain a list of mailboxes contained within INBOX
all_folders = imap.list('', 'INBOX/%')
# all_folders is always set to nil

我已经尝试了不同的参数排列方式用于Net::IMAP#list方法。我做错了什么?

TIA

2个回答

4

这应该能够起作用,你可以尝试使用*代替%。

% is a wildcard for everything besides hierarchical characters.
* also includes hierarchical characters.

You should get back an array of IMAP::MailboxList

你也可以尝试以下方法:

imap.list('*', '*')  to see a list of folders.

您提供的代码应该可以工作,但不同的邮件提供商有不同的实现方式,因此知道您使用的是哪个邮件提供商可能有助于解决问题。


谢谢!我很惊讶地发现,IMAP 的许多方面似乎都依赖于客户端/服务器(Gmail 的 IMAP 与我的 ISP(Dreamhost)的功能不同)。如果有任何文档指针,将不胜感激 - 我一直在查看 RFC,但是再次发现,许多事情都忽略了 RFC。 - RobertJoseph
1
RFC 3501是一个很好的起点,其它的一些东西都在某种程度上遵循它。Gmail是一个IMAP /网关/,并试图适应IMAP中不存在的功能(比如标签)。 - Max
3
另外,如果您想要绝对所有的文件夹,您需要使用 imap.list('', '*'),第一个参数是空字符串。 - Max

0

对于 Net::IMAP 版本 2.0.3,正确的方法是: imap.list('%', '%')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接