【问题标题】:Queries regarding Mailkit关于 Mailkit 的查询
【发布时间】:2021-06-17 23:11:52
【问题描述】:

我有一个需要从邮箱下载邮件的需求,我有以下疑问

  1. 有没有使用 ImapClient 下载批量邮件的选项
  2. 我可以使用 ImapClient 打开邮箱的并发连接数

【问题讨论】:

  • 我的要求是在一小时内下载大约 4 万封邮件

标签: mailkit


【解决方案1】:
  1. MailKit 的 ImapFolder 类有一些您可能会发现有用的 GetStreams()GetStreamsAsync() API。显然,这些 API 将下载的消息显示为 System.IO.Stream 而不是 MimeMessage,但如果您要批量下载消息,您可能不打算将它们用作 MimeMessages(您可能只想将它们转储到文件中)。
  2. 每个 ImapClient 只支持一个连接。也就是说,如果您需要多个并发连接,没有什么能阻止您实例化多个 ImapClient 并将它们连接到相同的 IMAP 服务器和凭据。

【讨论】:

  • 感谢您的回复。 1. 我希望将所有电子邮件保存为 .eml 文件。如何使用 GetStreams() 或 GetStreamsAsync() 做到这一点? 2. 我尝试了 10 个并发连接,但是每当我超过 14-15 个连接时,我就会登录失败。从协议记录器我也登录失败。
  • 流的格式已经正确。只需将它们写入 FileStream。 using (var file = new FIle.Create ("something.eml")) { stream.CopyTo (file); }
  • 当您尝试建立 14-15 个并发连接时出现错误,这是服务器问题。大多数服务器都有他们将接受的最大并发连接数。老实说,我很惊讶您在看到此错误之前设法达到 14-15 ;-)
猜你喜欢
  • 2021-02-06
  • 2012-03-05
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
相关资源
最近更新 更多