【问题标题】:IMAP fetch body too slowIMAP 获取正文太慢
【发布时间】:2013-11-02 10:00:47
【问题描述】:

尝试从 IMAP(gmail) 获取电子邮件并在最后一部分中苦苦挣扎。

如果我只获取邮件标题,对于收件箱中的 85 条邮件,需要 3 秒:

imap.fetch(message_ids, '(BODY.PEEK[HEADER.FIELDS (FROM TO CC SUBJECT DATE)])')

但如果我尝试获取电子邮件正文,大约需要 3 分钟:

imap.fetch(message_ids, '(RFC822)')

imap.fetch(message_ids, '(BODY.PEEK[TEXT])')

imap.fetch(message_ids, 'RFC822.TEXT')

已尝试将 TCP_NODELAY 设置为此处建议的某个线程。 imapClient lib 和 Twisted imap4 模块存在同样的问题

有什么想法吗?

【问题讨论】:

  • 你的身体有大附件吗?下载标头很快,因为没有太多数据,但是如果您有很多 20 mb 的消息,可能需要一段时间......也许您应该获取 bodystructure 以便您可以找出主要部分,以及它有多大。
  • 谢谢!必须单独查看 bodystructure 并获取 headers 和 body。我以为 BODY[TEXT] 只会带来正文的文本内容,必须获取 BODY[1]
  • 很高兴能帮上忙。我会将我的评论重新排列成答案,以便您接受。

标签: python imap imaplib


【解决方案1】:

所有这些都将检索邮件的完整 MIME 内容,如果它们包含附件,则可能会非常大,并且需要很长时间。

如果您获取BODYSTRUCTURE,您可以解析消息的格式/结构,并在下载之前了解大小,以及主要“正文”部分的确切位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2018-07-06
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2021-07-06
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多