我想用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...
答案 0 :(得分:2)
imap rfc没有提供任何此类实现,但作为替代方案可能存在可能的黑客攻击,假设邮件遵循rfc标准,获取邮件的整个邮件头并检查content type
是否为multipart/mixed
{{1}}然后确定邮件中存在附件。
在内容类型上,您可以在http://en.wikipedia.org/wiki/MIME
获取更多信息这只是查找附件的可能方法之一。