如何使用 mailkit/mimekit IMAP 下载/保存所有收件箱/发送的电子邮件?
Posted
技术标签:
【中文标题】如何使用 mailkit/mimekit IMAP 下载/保存所有收件箱/发送的电子邮件?【英文标题】:How to download/save all the inbox/sent emails using mailkit/mimekit IMAP? 【发布时间】:2018-04-18 06:05:29 【问题描述】:我已成功使用 MAILKIT/MIMEKIT api 发送/接收电子邮件。现在,我正在使用 IMAP 功能来下载 INBOX 和 SENT 邮件并将它们存储在本地?我应该使用什么数据库?或者我应该如何进行?
【问题讨论】:
这将是一个useful thread 不是关于 ActiveMail DLL 的吗?但是,我目前正在使用 MAILKIT/MIMEKIT dll。 【参考方案1】:您可以使用数据库,也可以将所有消息保存到 Maildir 结构中,或者您甚至可以将所有消息保存到单个文件中,例如 mbox。
您决定如何处理这完全取决于您。
【讨论】:
再次感谢,您总是回复我与 mailkit 相关的查询,非常棒。我很感谢你。你能指导我一本书或文档对电子邮件和开发电子邮件客户端有很好的了解吗?就像这个 maildir 或 mbox ...我的意思是我以前没有听说过这些术语。但现在我会读它。只是一本让我了解如何使用 Mailkit/Mimekit 开发电子邮件客户端的一般书籍? 我知道这个问题很老,但我一直在寻找如何将所有消息保存到单个文件(如 .mbox 文件)的示例,但没有成功。你有一个例子可以在这里为我和将来寻找这个的任何人列出吗?var fromLine = Encoding.ASCII.GetBytes ("From -" + Environment.NewLine); foreach (var uid in uids) var message = client.Inbox.GetMessage (uid); mboxStream.Write (fromLine, 0, fromLine.Length); message.WriteTo (mboxStream);
谢谢 jstedfast !!!我希望有一个更完整的示例,因为我不熟悉 mboxStream 也不熟悉 fromLine 的原因。我假设 mboxStream 只是一个 FileStream?像这样的东西会起作用吗? var exportStream = new MemoryStream(); foreach (var uid in uids) var message = client.Inbox.GetMessage(uid); message.WriteTo(exportStream); exportStream.Position = 0; using (var fileStream = File.Create(@"C:\temp\results.mbox")) exportStream.Seek(0, SeekOrigin.Begin); exportStream.CopyTo(fileStream);
问一个新的 *** 问题,我会发布一些代码。是的,mbox 流只是一个文件流,但您的代码不起作用。以上是关于如何使用 mailkit/mimekit IMAP 下载/保存所有收件箱/发送的电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Zend_Mail_Protocol_Imap 或 Zend_Mail_Storage_Imap 批量检索电子邮件