示例#1
0
        private void ExecuteImpl()
        {
            bool      wasChanges = false;
            IEMessage message    = OpenMessage(ref wasChanges);

            if (message == null)
            {
                return;
            }

            using ( message )
            {
                SetPriority(message, ref wasChanges);
                SetSubject(message, ref wasChanges);
                SetDescription(message, ref wasChanges);
                SetDueDate(message, ref wasChanges);
                SetStartDate(message, ref wasChanges);
                SetRemindDate(message, ref wasChanges);
                SetRemindActive(message, ref wasChanges);
                SetStatus(message, ref wasChanges);
                if (Settings.SyncTaskCategory)
                {
                    SetCategories(message, ref wasChanges);
                }
                SetOMTaskID(message, ref wasChanges);
                if (wasChanges)
                {
                    OutlookSession.SaveChanges(_created, "Export task resource id = " + _task.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID));
                }
            }
        }
示例#2
0
        private void DoMoveBetweenStorages(IResource resMail, IEMessage message, PairIDs messageIDs, PairIDs selectedFolderIDs)
        {
            using ( message )
            {
                IEFolder folder =
                    OutlookSession.OpenFolder(selectedFolderIDs.EntryId, selectedFolderIDs.StoreId);
                if (folder == null)
                {
                    return;
                }
                using ( folder )
                {
                    IEMessage newMessage = folder.CreateMessage("IPM.note");
                    using ( newMessage )
                    {
                        message.CopyTo(newMessage);
                        string entryID = newMessage.GetBinProp(MAPIConst.PR_ENTRYID);
                        OutlookSession.SaveChanges(true, "Save mail for moving between storages resource id = " + resMail.Id, newMessage, entryID);
                        if (_copy)
                        {
                            return;
                        }

                        if (!string.IsNullOrEmpty(entryID) && !resMail.HasProp(-PROP.Attachment))
                        {
                            new ResourceProxy(resMail).SetProp(PROP.EntryID, entryID);
                        }
                        OutlookSession.DeleteMessage(messageIDs.StoreId, messageIDs.EntryId, false);
                    }
                }
            }
        }
示例#3
0
        protected override void ExecuteAction(IResource resource, PairIDs pairIDs)
        {
            Tracer._Trace("Execute action: UnDeleteIMAPMessageAction");
            Trace.WriteLine(">>> UnDeleteIMAPMessageAction.ExecuteAction");
            if (pairIDs == null)
            {
                return;
            }

            IResource folder = resource.GetLinkProp(PROP.MAPIFolder);

            if (!Folder.IsIMAPFolder(folder))
            {
                return;
            }
            IEMessage message = OutlookSession.OpenMessage(pairIDs.EntryId, pairIDs.StoreId);

            if (message == null)
            {
                return;
            }
            using ( message )
            {
                int tag = message.GetIDsFromNames(ref GUID.set1, lID.msgDeletedInIMAP, PropType.PT_LONG);
                message.DeleteProp(tag);
                OutlookSession.SaveChanges("Undelete message resource id = " + resource.Id, message, pairIDs.EntryId);
            }
            Trace.WriteLine("<<< UnDeleteIMAPMessageAction.ExecuteAction");
        }
示例#4
0
        private void OnImportanceMailChangedImpl(IResource emailResource)
        {
            if (emailResource != null && emailResource.Type == STR.Email)
            {
                if (Mail.MailInIMAP(emailResource))
                {
                    return;
                }

                int     importance = emailResource.GetIntProp(PROP.Importance);
                PairIDs messageIDs = PairIDs.Get(emailResource);
                if (messageIDs == null)
                {
                    return;
                }
                IEMessage message = OutlookSession.OpenMessage(messageIDs.EntryId, messageIDs.StoreId);
                if (message != null)
                {
                    using ( message )
                    {
                        message.SetLongProp(MAPIConst.PR_IMPORTANCE, importance + 1);
                        OutlookSession.SaveChanges("Export importance flag for resource id = " + emailResource.Id, message, messageIDs.EntryId);
                    }
                }
            }
        }
示例#5
0
        protected override void Execute()
        {
            if (Settings.TraceContactChanges)
            {
                Trace("Try to export contact");
                _resTracer.Trace(_contact);
            }
            IEMAPIProp message = OpenMessage(_contact, _createNew, true, true);

            if (message == null)
            {
                if (_newCreated)
                {
                    _tracer.Trace("Cannot Export NEW contact for resource id = " + _contact.Id);
                }
                _tracer.Trace("Cannot Export contact for resource id = " + _contact.Id);
                return;
            }
            using ( message )
            {
                IContact contactBO = Core.ContactManager.GetContact(_contact);
                ExportProperties(message, contactBO);
                ExportPhones(contactBO, message);
                SetEmailAddress(message);
                if (Settings.SyncContactCategory)
                {
                    SetCategories(message);
                }
                _lastContact = _contact;
                OutlookSession.SaveChanges(_newCreated, "Export contact for resource id = " + _contact.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID));
            }
        }
示例#6
0
        private void OnUnreadItemChangedImpl(IResource emailResource)
        {
            Guard.NullArgument(emailResource, "emailResource");
            if (emailResource.Type != STR.Email)
            {
                return;
            }
            PairIDs messageIDs = PairIDs.Get(emailResource);

            if (messageIDs == null)
            {
                return;
            }

            IResource folder = Mail.GetParentFolder(emailResource);

            if (folder != null && Folder.IsIMAPFolder(folder))
            {
                PairIDs folderIDs = PairIDs.Get(folder);
                if (folderIDs != null)
                {
                    IEFolder mapiFolder = OutlookSession.OpenFolder(folderIDs.EntryId, folderIDs.StoreId);
                    if (mapiFolder != null)
                    {
                        using ( mapiFolder )
                        {
                            try
                            {
                                mapiFolder.SetReadFlags(messageIDs.EntryId, emailResource.HasProp(Core.Props.IsUnread));
                                return;
                            }
                            catch (COMException exception)
                            {
                                if (exception.ErrorCode == (unchecked ((int)0x80040604)))
                                {
                                    StandartJobs.MessageBox("Unspecified error. Can't change unread flag for email.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    return;
                                }
                                Core.ReportException(exception, ExceptionReportFlags.AttachLog);
                            }
                        }
                    }
                }
            }

            IEMessage message = OutlookSession.OpenMessage(messageIDs.EntryId, messageIDs.StoreId);

            if (message != null)
            {
                using ( message )
                {
                    bool unread = emailResource.HasProp(Core.Props.IsUnread);
                    message.SetUnRead(unread);
                    OutlookSession.SaveChanges("Export Read/Unread flag" + emailResource.Id, message, messageIDs.EntryId);
                }
            }
        }
示例#7
0
        protected override void Execute()
        {
            IEMessage message = OutlookSession.OpenMessage(_entryId, _storeId);

            if (message == null)
            {
                return;
            }
            using ( message )
            {
                if (ProcessCategories(message, _mail))
                {
                    OutlookSession.SaveChanges("Export categoryies for resource id = " + _mail.Id, message, _entryId);
                }
            }
        }
示例#8
0
        private static void ExportAnnotationImpl(IResource emailResource)
        {
            Guard.NullArgument(emailResource, "emailResource");
            if (emailResource.Type != STR.Email)
            {
                throw new ArgumentException("Expected 'Email' resource but was " + emailResource.Type);
            }
            if (Mail.MailInIMAP(emailResource))
            {
                return;
            }

            PairIDs messageIDs = PairIDs.Get(emailResource);

            if (messageIDs == null)
            {
                return;
            }
            IEMessage message = OutlookSession.OpenMessage(messageIDs.EntryId, messageIDs.StoreId);

            if (message == null)
            {
                return;
            }
            using ( message )
            {
                string annotation    = emailResource.GetPropText(Core.Props.Annotation);
                int    tag           = message.GetIDsFromNames(ref GUID.set1, lID.msgFlagAnnotation, PropType.PT_STRING8);
                string oldAnnotation = message.GetStringProp(tag);
                if (oldAnnotation == null)
                {
                    oldAnnotation = string.Empty;
                }
                if (!oldAnnotation.Equals(annotation))
                {
                    if (annotation.Length == 0)
                    {
                        message.DeleteProp(tag);
                    }
                    else
                    {
                        message.SetStringProp(tag, annotation);
                    }
                    OutlookSession.SaveChanges("ExportAnnotation for resource id = " + emailResource.Id, message, messageIDs.EntryId);
                }
            }
        }
示例#9
0
        protected override void Execute()
        {
            IEMAPIProp message = OpenMessage(_contact, false, true, true);

            if (message == null)
            {
                if (_newCreated)
                {
                    _tracer.Trace("Cannot Export NEW contact for resource id = " + _contact.Id);
                }
                _tracer.Trace("Cannot Export contact for resource id = " + _contact.Id);
                return;
            }
            using ( message )
            {
                ExportCategories.ProcessCategories(message, _contact);
                OutlookSession.SaveChanges(_newCreated, "Export contact for resource id = " + _contact.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID));
            }
        }
示例#10
0
        private void ExportFlag(IEMessage message, int flagStatus, int flagColor)
        {
            bool wasChanges = false;

            if (_flagged)
            {
                if (_completed)
                {
                    SetCompleteFlag(message, flagStatus, flagColor, ref wasChanges);
                }
                else
                {
                    SetColorFlag(message, flagStatus, flagColor, ref wasChanges);
                }
            }
            else
            {
                ClearFlag(message, flagStatus, flagColor, ref wasChanges);
            }
            if (wasChanges)
            {
                OutlookSession.SaveChanges("Export email flag for resource id = " + _emailResource.Id, message, message.GetBinProp(MAPIConst.PR_ENTRYID));
            }
        }