protected override void CopySingleMessage(MessageRec messageRec, IFolderProxy folderProxy, PropTag[] propTagsToExclude, PropTag[] excludeProps) { ExecutionContext.Create(new DataContext[] { new OperationDataContext("EasSourceMailbox.CopySingleMessage", OperationType.None), new EntryIDsDataContext(messageRec.EntryId) }).Execute(delegate { Add add; if (this.EasFolderCache.TryGetValue(messageRec.FolderId, out add)) { EasFolderType easFolderType = add.GetEasFolderType(); if (EasFolder.IsCalendarFolder(easFolderType)) { Properties calendarItemProperties = this.ReadCalendarItem(messageRec); EasSourceMailbox.CopyCalendarItem(messageRec, calendarItemProperties, folderProxy); return; } if (EasFolder.IsContactFolder(easFolderType)) { EasSourceMailbox.CopyContactItem(messageRec, folderProxy); return; } SyncEmailUtils.CopyMimeStream(this, messageRec, folderProxy); } }); }
protected MessageRec CreateMessageRec(string uniqueId, long messageSize) { PropValueData[] messageProps = SyncEmailUtils.GetMessageProps(default(SyncEmailContext), this.Mailbox.PopConnection.ConnectionContext.UserName, this.FolderId, new PropValueData[0]); PropValueData[] array = new PropValueData[messageProps.Length + 1]; messageProps.CopyTo(array, 0); array[array.Length - 1] = new PropValueData(PropTag.LastModificationTime, CommonUtils.DefaultLastModificationTime); return(new MessageRec(PopEntryId.CreateMessageEntryId(uniqueId), this.FolderId, CommonUtils.DefaultLastModificationTime, (int)messageSize, MsgRecFlags.None, array)); }
PropTag[] IMailbox.GetIDsFromNames(bool createIfNotExists, NamedPropData[] npda) { MrsTracer.Provider.Function("ImapMailbox.IMailbox.GetIDsFromNames", new object[0]); if (createIfNotExists) { throw new GetIdsFromNamesCalledOnDestinationException(); } return(SyncEmailUtils.GetIDsFromNames(npda, null)); }
PropTag[] IMailbox.GetIDsFromNames(bool createIfNotExists, NamedPropData[] npda) { MrsTracer.Provider.Function("EasMailbox.IMailbox.GetIDsFromNames", new object[0]); if (createIfNotExists) { throw new GetIdsFromNamesCalledOnDestinationException(); } return(SyncEmailUtils.GetIDsFromNames(npda, (NamedPropData propTag) => StringComparer.OrdinalIgnoreCase.Equals(propTag.Name, "ObjectType"))); }
private PropValueData[] GetAdditionalProps(DeleteCommand delete) { return(SyncEmailUtils.GetMessageProps(new SyncEmailContext { SyncMessageId = delete.ServerId }, this.UserSmtpAddressString, base.EntryId, new PropValueData[] { new PropValueData(PropTag.ObjectType, 1) })); }
protected override void CopySingleMessage(MessageRec message, IFolderProxy folderProxy, PropTag[] propTagsToExclude, PropTag[] excludeProps) { ExecutionContext.Create(new DataContext[] { new OperationDataContext("PopSourceMailbox.CopySingleMessage", OperationType.None), new EntryIDsDataContext(message.EntryId) }).Execute(delegate { SyncEmailUtils.CopyMimeStream(this, message, folderProxy); }); }
private PropValueData[] GetAdditionalProps(Fetch fetch) { return(SyncEmailUtils.GetMessageProps(new SyncEmailContext { IsRead = new bool?(fetch.IsRead()), IsDraft = new bool?(base.EasFolderType == EasFolderType.Drafts), SyncMessageId = fetch.ServerId }, this.UserSmtpAddressString, base.EntryId, new PropValueData[] { new PropValueData(PropTag.LastModificationTime, DateTime.UtcNow) })); }
private PropValueData[] GetAdditionalProps(AddCommand add) { List <PropValueData> list = new List <PropValueData>(); list.Add(new PropValueData(PropTag.LastModificationTime, CommonUtils.DefaultLastModificationTime)); list.Add(new PropValueData(PropTag.ObjectType, 0)); if (EasFolder.IsContactFolder(base.EasFolderType)) { List <PropValueData> contactProperties = EasFxContactMessage.GetContactProperties(add.ApplicationData); if (contactProperties.Count > 0) { list.AddRange(contactProperties); } } return(SyncEmailUtils.GetMessageProps(new SyncEmailContext { IsRead = new bool?(add.IsRead()), IsDraft = new bool?(base.EasFolderType == EasFolderType.Drafts), SyncMessageId = add.ServerId }, this.UserSmtpAddressString, base.EntryId, list.ToArray())); }
private List <MessageRec> GetMessageRecs(List <ImapMessageRec> imapMessageRecs) { if (imapMessageRecs.Count == 0) { return(new List <MessageRec>(0)); } List <MessageRec> list = new List <MessageRec>(imapMessageRecs.Count); foreach (ImapMessageRec imapMessageRec in imapMessageRecs) { SyncEmailContext syncEmailContext = ImapFolder.GetSyncEmailContext(this.Folder, imapMessageRec); int messageSize = 0; ImapExtendedMessageRec imapExtendedMessageRec = imapMessageRec as ImapExtendedMessageRec; if (imapExtendedMessageRec != null) { messageSize = (int)imapExtendedMessageRec.MessageSize; } PropValueData[] messageProps = SyncEmailUtils.GetMessageProps(syncEmailContext, this.Mailbox.ImapConnection.ConnectionContext.UserName, this.FolderId, new PropValueData[0]); MessageRec item = new MessageRec(ImapEntryId.CreateMessageEntryId(imapMessageRec.Uid, this.Folder.UidValidity, this.Folder.Name, this.Mailbox.ImapConnection.ConnectionContext.UserName), this.FolderId, CommonUtils.DefaultLastModificationTime, messageSize, MsgRecFlags.None, messageProps); list.Add(item); } return(list); }
private PropValueData[] GetAdditionalProps(ChangeCommand change) { bool?isRead = change.IsRead(); EasMessageCategory easMessageCategory = (isRead == null) ? EasMessageCategory.AddOrUpdate : (isRead.Value ? EasMessageCategory.ChangeToRead : EasMessageCategory.ChangeToUnread); List <PropValueData> list = new List <PropValueData>(); list.Add(new PropValueData(PropTag.LastModificationTime, DateTime.UtcNow)); list.Add(new PropValueData(PropTag.ObjectType, (int)easMessageCategory)); if (EasFolder.IsContactFolder(base.EasFolderType)) { List <PropValueData> contactProperties = EasFxContactMessage.GetContactProperties(change.ApplicationData); if (contactProperties.Count > 0) { list.AddRange(contactProperties); } } return(SyncEmailUtils.GetMessageProps(new SyncEmailContext { IsRead = isRead, IsDraft = new bool?(base.EasFolderType == EasFolderType.Drafts), SyncMessageId = change.ServerId }, this.UserSmtpAddressString, base.EntryId, list.ToArray())); }
public static PropValueData[] GetMessageProps(SyncEmailContext context, string accountName, byte[] folderId, params PropValueData[] extraProps) { ArgumentValidator.ThrowIfNullOrEmpty("accountName", accountName); ArgumentValidator.ThrowIfNull("folderId", folderId); List <PropValueData> list = new List <PropValueData>(SyncEmailUtils.SyncEmailPropTags.Length + 3); list.Add(new PropValueData(SyncEmailUtils.SyncMessageIdPTag, context.SyncMessageId)); list.Add(new PropValueData(SyncEmailUtils.SyncAccountNamePTag, accountName)); list.Add(new PropValueData(SyncEmailUtils.SyncFolderIdPTag, folderId)); foreach (PropTag propTag in SyncEmailUtils.SyncEmailPropTags) { PropTag propTag2 = propTag; if (propTag2 != PropTag.MessageFlags) { if (propTag2 != (PropTag)276824067U) { if (propTag2 == PropTag.SpamConfidenceLevel) { list.Add(new PropValueData(propTag, -1)); } } else if (context.ResponseType != null) { list.Add(new PropValueData(propTag, (int)SyncEmailUtils.GetIconIndex(context.ResponseType))); } } else { list.Add(new PropValueData(propTag, (int)SyncEmailUtils.GetMessageFlags(context.IsRead, context.IsDraft))); } } if (extraProps != null) { list.AddRange(extraProps); } return(list.ToArray()); }