C# Imap 客户端列表电子邮件 headerinfo 性能
我正在开发 imap 电子邮件客户端。
我有一个搜索功能,效果很好。
它返回一个自定义的 EmailHeaderInfo 列表。
此 EmailheaderInfo 类包含以下属性: UID、主题、发件人(System.Net.Mail.MailAdress,它也包含显示名称)、日期(接收)、大小、标记(检查已读/未读状态)和附件(检查电子邮件是否有附件)。我用正确的字符集存储此类中的所有内容。
在此搜索功能中,我使用 Imap SEARCH 命令来获取 uids,并使用此 uids 我使用以下 FETCH 命令:
UID FETCH " + uids[i] + " (UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (Received From subject Content-Type)])
每次 Fetch 后,我都会使用正则表达式获取大小和标志,以及使用解析标头的其他信息。
目前列出 250 封电子邮件需要 8 秒。
我真的很好奇其他人关于如何使其更快的意见或建议。
更新:
我使用消息集运行 Fetch 命令(我从 SEARCH 命令结果创建了一个消息集)。
现在列出约 450 封邮件需要 1-2 秒。最后真的很快。
I am working on an imap email client.
I have a search function, which is works perfectly.
It returns a custom EmailHeaderInfo List.
This EmailheaderInfo Class contains the next properties:
UID, Subject, From(System.Net.Mail.MailAdress, its contain displayname too), Date(Receive),Size, Flag(to check read/unread status) and Attachment(To check email has attchment or not). I store everything in this class with the correct charset.
In this search function I use Imap SEARCH command to get uids, and with this uids
I use the following FETCH command:
UID FETCH " + uids[i] + " (UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (Received From Subject Content-Type)])
After each Fetch I get size and flag with regexp, and other information with parse header.
At the moment to list 250 emails takes 8 sec.
I really curious for other people opinion or suggestion about how to make it faster.
Update:
I run Fetch command with a messagetset(I made a messageset from the SEARCH command result).
Now to list ~450 mails takes 1-2 sec. Finally it's really fast.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先您需要检查消息信息返回时间。服务器在不解析的情况下返回所有信息的速度有多快。
然后你就可以看到你花了多少时间...
题外话注意:
主题,由字符串组成,根据 IMAP,任何字符串都可以表示为字符串文字。
因此,您需要做好接收它们的准备。
这意味着命令可以扩展到多行,您需要读取更多行才能获取完整的数据......
RFC 3501 字符串文字将对其进行描述。
First you need to check messages info return time. How fast server returns all info without parsing.
Then you can see how much time you spend ...
Off topic note:
Subject,From consist strings, as per IMAP any string can be represented as string literal.
So you need to be prepared to receive them.
This means command can expand to multiple lines, you need to read more lines to get complete data ...
RFC 3501 string literal will describe it.