Example #1
0
        public void AddFolder(IMAPIFolder folder)
        {
            //Add the messages in this folder to the maildir
            Error hr;

            IMAPITable contentsTable;
            folder.GetContentsTable(0, out contentsTable);
            using(contentsTable) {
                MAPI33.MapiTypes.Value[,] rows;
                contentsTable.SetColumns(new Tags[] { Tags.PR_ENTRYID  }, IMAPITable.FLAGS.Default);

                for( ;contentsTable.QueryRows(1, 0, out rows) == Error.Success && rows.Length > 0; ) {
                    //Get the message object for this entry id
                    IUnknown unk;
                    MAPI.TYPE objType;
                    IMessage msg;

                    hr = folder.OpenEntry(ENTRYID.Create(rows[0,0]), Guid.Empty, IMAPIContainer.FLAGS.BestAccess, out objType, out unk);
                    if (hr != Error.Success) {
                        throw new MapiException(hr);
                    }

                    msg = (IMessage)unk;
                    unk.Dispose();

                    using (msg) {
                        AddMessage(msg);
                    }
                }
            }
        }
 public void Dispose()
 {
     //Have to clean up the folder object
     if (_folder != null) {
         _folder.Dispose();
         _folder = null;
     }
 }
Example #3
0
 private void PopulateFolders(IMAPIFolder folder, TreeNode node)
 {
     IMAPIFolderID[] subFolders = folder.GetSubFolders((int)folder.NumSubFolders);
     foreach (IMAPIFolderID fId in subFolders)
     {
         IMAPIFolder f = fId.OpenFolder();
         TreeNode newNode = new TreeNode(f.ToString() + " (" + f.NumSubItems.ToString() + " sub items)");
         newNode.Tag = fId;
         node.Nodes.Add(newNode);
         PopulateFolders(f, newNode);
     }
 }
Example #4
0
        public void Save()
        {
            IMAPIFolder imapi = _item.MAPIOBJECT as IMAPIFolder;

            try
            {
                imapi.SaveChanges(SaveChangesFlags.FORCE_SAVE);
            }
            finally
            {
                ComRelease.Release(imapi);
            }
        }
Example #5
0
        private void PopulateFolders(IMAPIFolder folder)
        {
            IMAPIFolderID[] subFolders = folder.GetSubFolders((int)folder.NumSubFolders);
            foreach (IMAPIFolderID fId in subFolders)
            {
                IMAPIFolder f = fId.OpenFolder();

                _stackPanel.AddElement(
                    new TextElement(" FOLDER:" + f.ToString() + " (" + f.NumSubItems.ToString() + " sub items)")
                        {
                            AutoSizeMode = TextElement.AutoSizeModeOptions.WrapText,
                            Size = new Size(450, 70),
                        }
                    );

                PopulateFolders(f);
                FillFolder(f);
            }
        }
Example #6
0
        private void FillFolder(IMAPIFolder folder)
        {
            // May as well show latest messages first:
            folder.SortMessagesByDeliveryTime(TableSortOrder.TABLE_SORT_DESCEND);
            // Get all the messages
            IMAPIMessage[] messages = folder.GetNextMessages(folder.NumSubItems);

            for (int i = 0, length = messages.Length; i < length; i++)
            {
                IMAPIMessage msg = messages[i];
                try
                {
                    _stackPanel.AddElement(new SmsBox(msg));
                }
                catch (Exception ex)
                {
                }
            }
        }
Example #7
0
        private void ShowFolderInTree(TreeNode parentNode, IMAPIFolder folder)
        {
            MapiFolderNode folderNode = new MapiFolderNode(folder);
            parentNode.Nodes.Add(folderNode);

            //Enumerate the child folders
            IMAPITable childFoldersTable;
            Error hr = folder.GetHierarchyTable(0, out childFoldersTable);
            if (hr != Error.Success) {
                throw new MapiException(hr);
            }

            using (childFoldersTable) {
                Value[,] rows;
                //Retrieve only one column: the entry ID
                childFoldersTable.SetColumns(new Tags[] {Tags.PR_ENTRYID}, IMAPITable.FLAGS.Default);

                //Query rows one at a time
                for (; childFoldersTable.QueryRows(1, 0, out rows) == Error.Success && rows.Length > 0; ) {
                    //Get the child folder having this row ID
                    IUnknown unk;
                    MAPI.TYPE objType;
                    IMAPIFolder subFolder;

                    hr = folder.OpenEntry(ENTRYID.Create(rows[0,0]), Guid.Empty, IMAPIContainer.FLAGS.BestAccess, out objType, out unk);
                    if (hr != Error.Success) {
                        throw new MapiException(hr);
                    }

                    subFolder = (IMAPIFolder)unk;
                    unk.Dispose();

                    using (subFolder) {
                        ShowFolderInTree(folderNode, subFolder);
                    }
                }
            }
        }
 public MapiFolderNode(IMAPIFolder folder)
 {
     Text = MapiUtils.GetStringProperty(folder, Tags.PR_DISPLAY_NAME);
     _folder = folder.Clone();
 }