firemail
标题:
收取控制 收取最近多少封与最近多少天的区别与原理
[打印本页]
作者:
hechengjin
时间:
2016-4-5 18:09
标题:
收取控制 收取最近多少封与最近多少天的区别与原理
本帖最后由 hechengjin 于 2016-4-5 18:35 编辑
mail.server.%serverkey%.autosync_max_age_days 所有日期单位都会转换为天存在这里
NS_IMPL_SERVERPREF_INT(nsImapIncomingServer, AutoSyncMaxAgeDays,
"autosync_max_age_days")
NS_IMETHODIMP nsDefaultAutoSyncMsgStrategy::IsExcluded(nsIMsgFolder *aFolder,
nsIMsgDBHdr *aMsgHdr, bool *aDecision)
{
NS_ENSURE_ARG_POINTER(aDecision);
NS_ENSURE_ARG_POINTER(aMsgHdr);
NS_ENSURE_ARG_POINTER(aFolder);
nsCOMPtr<nsIMsgIncomingServer> server;
nsresult rv = aFolder->GetServer(getter_AddRefs(server));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIImapIncomingServer> imapServer(do_QueryInterface(server, &rv));
int32_t offlineMsgAgeLimit = -1;
imapServer->GetAutoSyncMaxAgeDays(&offlineMsgAgeLimit);
NS_ENSURE_SUCCESS(rv, rv);
PRTime msgDate;
aMsgHdr->GetDate(&msgDate);
*aDecision = offlineMsgAgeLimit > 0 &&
msgDate < MsgConvertAgeInDaysToCutoffDate(offlineMsgAgeLimit);
return NS_OK;
}
复制代码
同步最近多少天,是指邮件头下载后,根据邮件头中的时间决定要不要同步对应的邮件内容。
作者:
hechengjin
时间:
2016-4-5 18:35
收取最近多少封原理实现:
针对每个邮件夹,有一个对象中保存了此邮件夹上共有多少封邮件t1和本地存在了多少封邮件t2,注意:t1在删除邮件(彻底删除和一般删除下数量都会减少),而t2只在彻底删除时,数量才会减少,故造成数量对不上。(是否有方案让t2与t1的变化方案一致?) 找到另一个值 记录了 手动删除的和彻底删除的数量,可以对得上了。t4 等于界面上保存的服务器上的值
采取另外一种方法是自己记录总数量t1,已存在的数量根据界面上弹出的窗口选择的数量自行计算t3,即为另一个已存在的意义同t2。但这种方案有一个问题就是虽然用户选择了界面上的下载数量,但有可能服务器端原因,造成实际上并没有下载这么多,就会明显造成实际下载的数量和保存的计数t3有明显的出入。---基于这种情况的暂缓解决方案 :判断t1和值 是否等于t4+t2 当两者不同时,修改对应值 .
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3