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; } }
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); } }
public void Save() { IMAPIFolder imapi = _item.MAPIOBJECT as IMAPIFolder; try { imapi.SaveChanges(SaveChangesFlags.FORCE_SAVE); } finally { ComRelease.Release(imapi); } }
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); } }
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) { } } }
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(); }