场景描述:
项目中有一处需要读取用户邮件服务器的未读邮件数,经调查发现其值与收件箱邮件数一致,并非未读邮件数目
调查:
程序读取邮件信息时使用的是POP3协议,于是想到是否因为此协议获取的邮件信息没有已读、未读的标示,遂阅读POP3协议和相关的IMAP协议。
经POP3协议读取到的邮件信息,其缺省状态为未读,所以导致即使已经阅读过的邮件经由客户端读取之后依然显示为未读,这就导致了前文中描述的问题。另外,POP3协议读取邮件时,默认为“离线模式”,即将服务器上的信息下载到本地后,删除服务器上的信息。而IMAP则相反,默认使用“在线模式”,即在服务器上进行操作,读取到本地的只是邮件信息概要。当然,两种协议的模式是可以通过设置进行调整的。