internal void ReceiveMail(ulong userGuid, ulong mailGuid) { UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler; UserInfo user = dataProcess.GetUserInfo(userGuid); if (null != user) { List <TableMailInfoWrap> mails; if (m_UserMails.TryGetValue((long)userGuid, out mails)) { if (null != mails) { TableMailInfoWrap info = null; int ct = mails.Count; int index = 0; for (; index < ct; ++index) { if (mails[index].Guid == mailGuid) { info = mails[index]; break; } } if (null != info && CheckBagCapacity(user, info)) { mails.RemoveAt(index); ExtractMailAttachment(info, userGuid); } } } MailStateInfo mailStateInfo = user.MailStateInfo; if (!mailStateInfo.IsAlreadyReceived(mailGuid)) { int wholeCt = m_WholeMails.Count; for (int index = 0; index < wholeCt; ++index) { TableMailInfoWrap info = m_WholeMails[index]; if (info.Guid == mailGuid) { if (CheckBagCapacity(user, info)) { mailStateInfo.ReceiveMail(mailGuid); if (info.LevelDemand <= user.Level && info.SendDate >= user.CreateTime && info.ExpiryDate >= DateTime.Now) { ExtractMailAttachment(info, userGuid); } } } } } } }