1

我想用 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...
4

1 回答 1

3

imap rfc 不提供任何此类实现,但作为替代方案,可能存在黑客攻击,假设邮件遵循 rfc 标准,获取邮件的整个邮件标头并检查content type它是否multipart/mixed确定附件存在于邮件。

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

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

于 2013-04-02T04:29:17.617 回答