我正在开发一个imap电子邮件客户端 我有一个搜索功能,它完美无缺 它返回一个自定义的EmailHeaderInfo列表。
此EmailheaderInfo类包含下一个属性: UID,主题,来自(System.Net.Mail.MailAdress,它还包含显示名称),日期(接收),大小,标记(检查已读/未读状态)和附件(检查电子邮件是否有附件)。我使用正确的字符集将所有内容存储在此类中。
在这个搜索功能中,我使用Imap SEARCH 命令获取uids,并使用此uid 我使用以下 FETCH 命令:
UID FETCH“+ uids [i] +”(UID RFC822.SIZE FLAGS BODY.PEEK [HEADER.FIELDS(从主题内容类型收到)])
每次获取后,我获得大小并使用regexp标记,并使用解析标题获取其他信息。
目前列出250封电子邮件需要8秒。
我真的很好奇其他人对如何加快速度的意见或建议。
更新
我使用messagetset运行Fetch命令(我从SEARCH命令结果中创建了一个消息集)。
现在列出约450封邮件需要1-2秒。最后它真的很快。
答案 0 :(得分:1)
首先,您需要检查消息信息返回时间。服务器在不解析的情况下返回所有信息的速度 然后你可以看到你花了多少时间......
非主题说明: Subject,From contains字符串,根据IMAP,任何字符串都可以表示为字符串文字。 所以你需要准备好接收它们。 这意味着命令可以扩展到多行,您需要读取更多行才能获得完整的数据... RFC 3501字符串文字将描述它。