public void LoadProperties(hMailServer.IMAPFolders imapFolders, bool publicFolders) { _folderHierarchyDelimiter = Utilities.APICreator.Settings.IMAPHierarchyDelimiter; btnEditPermissions.Visible = publicFolders; _folders = imapFolders; for (int i = 0; i < _folders.Count; i++) { hMailServer.IMAPFolder folder = _folders[i]; TreeNode node = treeFolders.Nodes.Add(folder.Name); node.Tag = folder; LoadSubFolders(folder, node); } if (treeFolders.Nodes.Count > 0) { treeFolders.SelectedNode = treeFolders.Nodes[0]; } ShowCurrentFolder(); }
public void TestReplaceFullPathInPublicFolderWithPartialPath() { hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp(); hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); hMailServer.IMAPFolders publicFolders = _settings.PublicFolders; hMailServer.IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); hMailServer.Message message = folder.Messages.Add(); message.Subject = "Test"; message.Save(); // Move the message file to another folder. string publicFolderPath = Path.Combine(_application.Settings.Directories.DataDirectory, "#Public"); string fileName = Path.Combine(publicFolderPath, "randomMail.eml"); File.Move(message.Filename, fileName); // Update the database with the 'invalid' path. string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}", Utilities.Escape(fileName), message.ID); SingletonProvider <Utilities> .Instance.GetApp().Database.ExecuteSQL(sql); // Now try to insert the message. Assert.IsTrue(_application.Utilities.ImportMessageFromFile(fileName, 0)); _application.Reinitialize(); string newMessgaeFilename = _settings.PublicFolders[0].Messages[0].Filename; Assert.AreNotEqual(fileName, newMessgaeFilename); Assert.IsTrue(File.Exists(newMessgaeFilename)); }
public void TestBasicIncrementsWithDeletion() { hMailServer.Account testAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "Test'*****@*****.**", "test"); SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 1); hMailServer.IMAPFolder inboxFolder = testAccount.IMAPFolders[0]; Assert.AreEqual(1, inboxFolder.CurrentUID); Assert.AreEqual(1, inboxFolder.Messages[0].UID); POP3Simulator.AssertGetFirstMessageText(testAccount.Address, "test"); SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 1); Assert.AreEqual(2, inboxFolder.CurrentUID); Assert.AreEqual(2, inboxFolder.Messages[0].UID); POP3Simulator.AssertGetFirstMessageText(testAccount.Address, "test"); SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 1); Assert.AreEqual(3, inboxFolder.CurrentUID); Assert.AreEqual(3, inboxFolder.Messages[0].UID); }
private void btnEditPermissions_Click(object sender, EventArgs e) { TreeNode selectedNode = treeFolders.SelectedNode; if (selectedNode == null) { return; } // First confirm that we can access the permissions. hMailServer.IMAPFolder folder = selectedNode.Tag as hMailServer.IMAPFolder; try { // This is a dummy test. We should never return here, but if we don't // have access to the ACL permissions, a message should be shown. if (folder.Permissions.Count < 0) { return; } } catch (Exception ex) { MessageBox.Show(ex.Message, EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } formFolderPermissions folderPermissions = new formFolderPermissions(folder); folderPermissions.ShowDialog(); }
public static void AssertMessageExistsInFolder(hMailServer.IMAPFolder folder, int expectedCount) { if (expectedCount == 0) { // just in case. Utilities.AssertRecipientsInDeliveryQueue(0); } int currentCount = 0; int timeout = 100; while (timeout > 0) { currentCount = folder.Messages.Count; if (currentCount == expectedCount) { return; } timeout--; Thread.Sleep(100); } string error = "Wrong number of messages in mailbox " + folder.Name; Assert.Fail(error); }
public void TestRenameAccountOrDomainWithMessagesWithFullPath() { var account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test message", "Test body"); hMailServer.IMAPFolder folder = account.IMAPFolders.get_ItemByName("Inbox"); Utilities.AssertMessageExistsInFolder(folder, 1); hMailServer.Message message = account.IMAPFolders.get_ItemByName("Inbox").Messages[0]; // Move the message file to another folder. string domainPath = Path.Combine(_application.Settings.Directories.DataDirectory, _domain.Name); string accountPath = Path.Combine(domainPath, "test"); string fileName = Path.Combine(accountPath, "randomMail.eml"); File.Move(message.Filename, fileName); // Update the database with the full path. string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}", Utilities.Escape(fileName), message.ID); SingletonProvider <Utilities> .Instance.GetApp().Database.ExecuteSQL(sql); // Now try to change the name of the domain or account. Should fail. account.Address = "*****@*****.**"; bool thrown = false; try { account.Save(); } catch (Exception) { thrown = true; } Assert.IsTrue(thrown); // Saving account is OK, unless its address is changed. account.Address = "*****@*****.**"; account.Save(); thrown = false; _domain.Name = "example.com"; try { _domain.Save(); } catch (Exception) { thrown = true; } Assert.IsTrue(thrown); // Saving domain is OK, unless its address is changed. _domain.Name = "test.com"; _domain.Save(); }
public void TestRenameRootPublicFolder() { hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("ShareA"); folder.Save(); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); hMailServer.IMAPFolder folder2 = folders.Add("ShareB"); folder2.Save(); hMailServer.IMAPFolderPermission permission2 = folder2.Permissions.Add(); permission2.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission2.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission2.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission2.set_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox, true); permission2.Save(); hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); IMAPSimulator simulator1 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareA")); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareB")); Assert.IsTrue(simulator1.RenameFolder("#Public.ShareA", "#Public.ShareB.ShareA")); Assert.IsFalse(simulator1.SelectFolder("#Public.ShareA")); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareB")); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareB.ShareA")); }
public void TestRetrievalOfMessageInDeletedFolderUsingIMAP() { hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp(); string deletedMessageText = _settings.ServerMessages.get_ItemByName("MESSAGE_FILE_MISSING").Text; hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody"); hMailServer.IMAPFolder inbox = account.IMAPFolders.get_ItemByName("Inbox");; Utilities.AssertMessageExistsInFolder(inbox, 1); hMailServer.Message message = inbox.Messages[0]; DirectoryInfo dir = new DirectoryInfo(Path.GetFullPath(message.Filename)); DirectoryInfo parent = dir.Parent.Parent.Parent; parent.Delete(true); IMAPSimulator sim = new IMAPSimulator(); sim.ConnectAndLogon(account.Address, "test"); sim.SelectFolder("INBOX"); string result = sim.Fetch("1 BODY[1]"); Assert.IsTrue(result.Contains(deletedMessageText.Replace("%MACRO_FILE%", message.Filename))); Utilities.AssertReportedError(); }
public void TestIMAPFolderPermissionAccessGroup() { hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp(); ; hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); hMailServer.Group group = SingletonProvider <Utilities> .Instance.AddGroup("TestGroup"); hMailServer.IMAPFolders publicFolders = _settings.PublicFolders; hMailServer.IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionGroupID = group.ID; permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeGroup; permission.Save(); Assert.AreEqual(permission.Group.Name, group.Name); permission = folder.Permissions.Add(); permission.PermissionAccountID = account1.ID; permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeUser; permission.Save(); Assert.AreEqual(permission.Account.Address, account1.Address); }
public void TestSaveMessageInExistingIMAPFolder() { hMailServer.Settings settings = SingletonProvider <Utilities> .Instance.GetApp().Settings; hMailServer.Account oAccount1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); // Check that the message does not exist POP3Simulator.AssertMessageCount(oAccount1.Address, "test", 0); // Send a message to the account. hMailServer.IMAPFolder folder = oAccount1.IMAPFolders.get_ItemByName("INBOX"); hMailServer.Message oMessage = folder.Messages.Add(); Assert.AreEqual(0, oMessage.State); oMessage.Body = "Välkommen till verkligheten"; oMessage.Subject = "Hej"; oMessage.Save(); Assert.AreEqual(2, oMessage.State); Assert.IsFalse(oMessage.Filename.Contains(settings.PublicFolderDiskName)); Assert.IsTrue(oMessage.Filename.Contains(_domain.Name)); // Check that the message exists string message = POP3Simulator.AssertGetFirstMessageText(oAccount1.Address, "test"); Assert.IsNotEmpty(message); Assert.Less(0, message.IndexOf("Hej")); }
public void TestFolderDeletion() { // Create a test account // Fetch the default domain hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); hMailServer.IMAPFolder folder = account1.IMAPFolders.Add("TestFolder1"); folder.Save(); IMAPSimulator simulator1 = new IMAPSimulator(); simulator1.ConnectAndLogon(account1.Address, "test"); string result = simulator1.List(); Assert.IsTrue(result.Contains(folder.Name)); simulator1.Disconnect(); // Delete the folder and confirm it's no longer listed. folder.Delete(); simulator1.ConnectAndLogon(account1.Address, "test"); result = simulator1.List(); Assert.IsFalse(result.Contains(folder.Name)); simulator1.Disconnect(); }
public bool SaveCurrentFolder() { TreeNode currentNode = treeFolders.SelectedNode; if (currentNode != null) { hMailServer.IMAPFolder folder = currentNode.Tag as hMailServer.IMAPFolder; if (folder.Name != currentNode.Text && currentNode.Text.Length > 0) { // Name has been changed. First check that it's not busy. if (!ValidateFolderName()) { return(false); } try { folder.Name = currentNode.Text; folder.Save(); return(true); } catch (Exception e) { MessageBox.Show(e.Message, EnumStrings.hMailServerAdministrator); return(false); } } } return(true); }
public void TestMoveMessageWithAccountLevelRule() { hMailServer.Account testAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "Test'*****@*****.**", "test"); // First deliver two messages to the inbox. SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 1); hMailServer.IMAPFolder inboxFolder = testAccount.IMAPFolders[0]; Assert.AreEqual(1, inboxFolder.CurrentUID); Assert.AreEqual(1, inboxFolder.Messages[0].UID); SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 2); Assert.AreEqual(2, inboxFolder.CurrentUID); Assert.AreEqual(2, inboxFolder.Messages[1].UID); CreateMoveRule(testAccount.Rules, "TestFolder"); // This message will be moved into the test folder. SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); // Wait for the message to arrive. Utilities.AssertFolderExists(testAccount.IMAPFolders, "TestFolder"); hMailServer.IMAPFolder testFolder = testAccount.IMAPFolders.get_ItemByName("TestFolder"); // Since the message is placed in a new folder, it should receive a unique UID. Utilities.AssertMessageExistsInFolder(testFolder, 1); Assert.AreEqual(1, testFolder.CurrentUID); Assert.AreEqual(1, testFolder.Messages[0].UID); }
public void TestReplaceInvalidPathWithCorrectPath() { hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test message", "Test body"); hMailServer.IMAPFolder folder = account.IMAPFolders.get_ItemByName("Inbox"); Utilities.AssertMessageExistsInFolder(folder, 1); hMailServer.Message message = account.IMAPFolders.get_ItemByName("Inbox").Messages[0]; string filename = message.Filename; // Now nothing should happen here. Assert.IsTrue(_application.Utilities.ImportMessageFromFile(filename, account.ID)); Assert.IsTrue(File.Exists(filename)); string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}", Utilities.Escape(message.Filename), message.ID); SingletonProvider <Utilities> .Instance.GetApp().Database.ExecuteSQL(sql); // Now the path should be replaced. Assert.IsTrue(_application.Utilities.ImportMessageFromFile(message.Filename, account.ID)); // Now nothing should happen. Assert.IsTrue(_application.Utilities.ImportMessageFromFile(message.Filename, account.ID)); Assert.IsTrue(File.Exists(message.Filename)); string content = POP3Simulator.AssertGetFirstMessageText(account.Address, "test"); Assert.IsTrue(content.Contains("Test message")); }
public void TestDeletionOfMessageInDeletedFolder() { hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp(); string deletedMessageText = _settings.ServerMessages.get_ItemByName("MESSAGE_FILE_MISSING").Text; hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody"); hMailServer.IMAPFolder inbox = account.IMAPFolders.get_ItemByName("Inbox");; Utilities.AssertMessageExistsInFolder(inbox, 1); hMailServer.Messages messages = inbox.Messages; hMailServer.Message message = messages[0]; DirectoryInfo dir = new DirectoryInfo(Path.GetFullPath(message.Filename)); DirectoryInfo parent = dir.Parent.Parent.Parent; parent.Delete(true); DateTime timeBeforeDelete = DateTime.Now; messages.DeleteByDBID(message.ID); TimeSpan executionTime = DateTime.Now - timeBeforeDelete; Assert.Greater(1500, executionTime.TotalMilliseconds); }
public void TestFolderAdd() { hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); string folderName = "åäö"; hMailServer.IMAPFolder folder = account.IMAPFolders.Add(folderName); hMailServer.IMAPFolder folder2 = account.IMAPFolders.get_ItemByName(folderName); Assert.AreEqual(folderName, folder2.Name); }
private void buttonEmptyFolder_Click(object sender, EventArgs e) { TreeNode selectedNode = treeFolders.SelectedNode; if (selectedNode == null) { return; } hMailServer.IMAPFolder folder = selectedNode.Tag as IMAPFolder; folder.Messages.Clear(); }
private void LoadSubFolders(hMailServer.IMAPFolder folder, TreeNode node) { hMailServer.IMAPFolders folders = folder.SubFolders; for (int i = 0; i < folders.Count; i++) { hMailServer.IMAPFolder subFolder = folders[i]; TreeNode subNode = node.Nodes.Add(subFolder.Name); subNode.Tag = subFolder; LoadSubFolders(subFolder, subNode); } }
public formFolderPermissions(hMailServer.IMAPFolder folder) { InitializeComponent(); EnableDisable(); _folder = folder; ListPermissions(); new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst); labelPermissionsFor.Text = ""; Strings.Localize(this); }
public formFolderPermissions(hMailServer.IMAPFolder folder) { InitializeComponent(); EnableDisable(); _folder = folder; ListPermissions(); new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst); labelPermissionsFor.Text = ""; Strings.Localize(this); }
private void ShowCurrentFolder() { TreeNode selectedNode = treeFolders.SelectedNode; if (selectedNode == null) { EnableDisable(); return; } hMailServer.IMAPFolder folder = selectedNode.Tag as IMAPFolder; textName.Text = folder.Name; EnableDisable(); }
public void TestSaveMessageWithScriptAndMoveMessageWithAccountRule() { _settings.Scripting.Enabled = true; _settings.Scripting.Reload(); hMailServer.Account testAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "Test'*****@*****.**", "test"); IMAPSimulator sim = new IMAPSimulator(); Assert.IsTrue(sim.ConnectAndLogon(testAccount.Address, "test")); // First deliver two messages to the inbox. SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 1); hMailServer.IMAPFolder inboxFolder = testAccount.IMAPFolders[0]; Assert.AreEqual(1, inboxFolder.CurrentUID); Assert.AreEqual(1, inboxFolder.Messages[0].UID); Assert.IsTrue(sim.Status("INBOX", "UIDNEXT").Contains("UIDNEXT 2")); SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); POP3Simulator.AssertMessageCount(testAccount.Address, "test", 2); Assert.IsTrue(sim.Status("INBOX", "UIDNEXT").Contains("UIDNEXT 3")); Assert.AreEqual(2, inboxFolder.CurrentUID); Assert.AreEqual(2, inboxFolder.Messages[1].UID); CreateMessageModificationRule(testAccount.Rules); CreateMoveRule(testAccount.Rules, "TestFolder"); // This message will be moved into the test folder. SMTPClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); // Wait for the message to arrive. Utilities.AssertFolderExists(testAccount.IMAPFolders, "TestFolder"); hMailServer.IMAPFolder testFolder = testAccount.IMAPFolders.get_ItemByName("TestFolder"); Utilities.AssertMessageExistsInFolder(testFolder, 1); // The UID for the inbox should be the same as before. Assert.IsTrue(sim.Status("INBOX", "UIDNEXT").Contains("UIDNEXT 3")); // Since the message is placed in a new folder, it should receive a unique UID. Assert.IsTrue(sim.Status("TestFolder", "UIDNEXT").Contains("UIDNEXT 2")); Assert.AreEqual(1, testFolder.Messages.Count); Assert.AreEqual(1, testFolder.CurrentUID); Assert.AreEqual(1, testFolder.Messages[0].UID); }
private void deleteFolderToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode selectedNode = treeFolders.SelectedNode; if (selectedNode == null) { return; } hMailServer.IMAPFolder folder = selectedNode.Tag as IMAPFolder; folder.Delete(); treeFolders.Nodes.Remove(selectedNode); ShowCurrentFolder(); }
private void buttonEmptyFolder_Click(object sender, EventArgs e) { TreeNode selectedNode = treeFolders.SelectedNode; if (selectedNode == null) { return; } if (MessageBox.Show(Strings.Localize("Are you sure you want to delete all messages in the folder?"), EnumStrings.hMailServerAdministrator, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { hMailServer.IMAPFolder folder = selectedNode.Tag as IMAPFolder; folder.Messages.Clear(); } }
private bool ValidateFolderName() { TreeNode currentNode = treeFolders.SelectedNode; hMailServer.IMAPFolder folder = currentNode.Tag as hMailServer.IMAPFolder; TreeNode nodeIterator = currentNode.FirstNode; while (nodeIterator != null) { if (nodeIterator != currentNode) { if (nodeIterator.Text == currentNode.Text) { MessageBox.Show(Strings.Localize("There is already an folder with this name."), EnumStrings.hMailServerAdministrator); return(false); } } nodeIterator = nodeIterator.NextNode; } if (textName.Text.Length > 255) { return(false); } if (textName.Text.ToUpper() == "INBOX") { return(false); } if (textName.Text.Contains(_folderHierarchyDelimiter)) { MessageBox.Show(Strings.Localize("A folder name can not contain the hierarchy delimiter."), EnumStrings.hMailServerAdministrator); return(false); } return(true); }
public void ConfirmFileAddedToCorrectPublicFolder() { Utilities utilities = SingletonProvider <Utilities> .Instance; hMailServer.Account oAccount = utilities.AddAccount(_domain, "*****@*****.**", "test"); IMAPSimulator oSimulator = new IMAPSimulator(); // Confirm that the public folder is empty before we start our test. string publicDir = utilities.GetPublicDirectory(); utilities.AssertFilesInDirectory(publicDir, 0); hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("Share"); folder.Save(); // Give everyone access to the folder. hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true); permission.Save(); // Add the message to the public folder. oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); oSimulator.SendSingleCommandWithLiteral("A01 APPEND #Public.Share {4}", "ABCD"); // Confirm that the message exists in the public folder and not in the inbox. Assert.AreEqual(1, oSimulator.GetMessageCount("#Public.Share")); Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX")); oSimulator.Disconnect(); // The public directory should now contain the message. utilities.AssertFilesInDirectory(publicDir, 1); // There users directory should still be empty. utilities.AssertFilesInUserDirectory(oAccount, 0); }
public static hMailServer.Message AssertRetrieveFirstMessage(hMailServer.IMAPFolder folder) { int timeout = 100; while (timeout > 0) { if (folder.Messages.Count > 0) { return(folder.Messages[0]); } timeout--; Thread.Sleep(100); } string error = "Could not retrieve message from folder"; Assert.Fail(error); return(null); }
public void TestSaveMessageInPublicIMAPFolder() { hMailServer.Settings settings = SingletonProvider <Utilities> .Instance.GetApp().Settings; hMailServer.IMAPFolders publicFolders = settings.PublicFolders; hMailServer.IMAPFolder testFolder = publicFolders.Add("TestFolder"); testFolder.Save(); // Send a message to the account. hMailServer.Message oMessage = testFolder.Messages.Add(); Assert.AreEqual(0, oMessage.State); oMessage.Body = "Välkommen till verkligheten"; oMessage.Subject = "Hej"; oMessage.Save(); Assert.AreEqual(2, oMessage.State); Assert.IsTrue(oMessage.Filename.Contains(settings.PublicFolderDiskName)); Assert.IsFalse(oMessage.Filename.Contains(_domain.Name)); }
public void TestReplaceFullPathWithPartialPath() { hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test message", "Test body"); hMailServer.IMAPFolder folder = account.IMAPFolders.get_ItemByName("Inbox"); Utilities.AssertMessageExistsInFolder(folder, 1); hMailServer.Message message = account.IMAPFolders.get_ItemByName("Inbox").Messages[0]; // Now nothing should happen. Assert.IsTrue(_application.Utilities.ImportMessageFromFile(message.Filename, account.ID)); // Move the message file to another folder. string domainPath = Path.Combine(_application.Settings.Directories.DataDirectory, _domain.Name); string accountPath = Path.Combine(domainPath, "test"); string fileName = Path.Combine(accountPath, "randomMail.eml"); File.Move(message.Filename, fileName); // Update the database with the 'invalid' path. string sql = string.Format("update hm_messages set messagefilename = '{0}' where messageid = {1}", Utilities.Escape(fileName), message.ID); SingletonProvider <Utilities> .Instance.GetApp().Database.ExecuteSQL(sql); Assert.IsTrue(File.Exists(fileName)); // Now the file should be moved to the correct path. Assert.IsTrue(_application.Utilities.ImportMessageFromFile(fileName, account.ID)); Assert.IsFalse(File.Exists(fileName)); // Now nothing should happen because the file is no longer there. Assert.IsFalse(_application.Utilities.ImportMessageFromFile(fileName, account.ID)); string content = POP3Simulator.AssertGetFirstMessageText(account.Address, "test"); Assert.IsTrue(content.Contains("Test message")); }
private void SetupPublicFolders() { hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("Test1"); folder.Save(); folder = folders.Add("Test2"); folder.Save(); folder = folders.Add("Test3"); folder.Save(); folder = folders.Add("ACL"); folder.Save(); hMailServer.Domain domain = _application.Domains[0]; hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(domain, "*****@*****.**", "test"); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeUser; permission.PermissionAccountID = account1.ID; permission.set_Permission(hMailServer.eACLPermission.ePermissionAdminister, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true); permission.Save(); folder = folder.SubFolders.Add("MySubFolder"); folder.Save(); hMailServer.Group group1 = _application.Settings.Groups.Add(); group1.Name = "ACLTestGroup"; group1.Save(); permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeGroup; permission.PermissionGroupID = group1.ID; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); }
private void createFolderToolStripMenuItem_Click(object sender, EventArgs e) { try { SaveCurrentFolder(); TreeNode selectedNode = treeFolders.SelectedNode; TreeNode newNode = null; hMailServer.IMAPFolder folder; if (selectedNode != null) { hMailServer.IMAPFolder parentFolder = selectedNode.Tag as hMailServer.IMAPFolder; folder = parentFolder.SubFolders.Add("Unnamed"); folder.Save(); newNode = selectedNode.Nodes.Add(folder.Name); newNode.Tag = folder; } else { folder = _folders.Add("Unnamed"); folder.Save(); newNode = treeFolders.Nodes.Add(folder.Name); newNode.Tag = folder; } treeFolders.SelectedNode = newNode; textName.Focus(); textName.SelectAll(); } catch (Exception ex) { MessageBox.Show("Creation of folder failed." + Environment.NewLine + ex.Message, EnumStrings.hMailServerAdministrator); } }
internal IMAPFolder(hMailServer.IMAPFolder o) { _object = o; }