是否可以只下载没有附件的IMAP邮件?

我想用Net :: IMAP处理一堆我的电子邮件,但是我想跳过带附件的电子邮件,因为它们花了太长时间。 任何提示? 最终,我希望尽快下载电子邮件的所有文本和HTML内容。 现在,我一次获取一个UID,并将其与15个进程并行化(最大GMAIL允许),但是我对带有附件的消息进行了追踪。

imap = Net::IMAP.new('imap.gmail.com', 993, usessl = true, certs = nil, verify = false) imap.authenticate('XOAUTH2', user.email, user.token) mailbox = "[Gmail]/All Mail" imap.select(mailbox) message_id = 177 imap.fetch(message_id,'RFC822')[0].attr['RFC822'] # this fetches the whole message, including attachment, which makes it slow... 

imap rfc不提供任何此类实现,但作为替代方案可能存在可能的hack,假设邮件遵循rfc标准,获取邮件的整个邮件头并检查content type如果它是multipart/mixed然后肯定邮件中存在附件。

在内容类型上,您可以在http://en.wikipedia.org/wiki/MIME获取更多信息

这只是查找附件的可能方法之一。