public static bool Authenticate(hMailServer.Application app, Settings.Server server) { string password = server.encryptedPassword; if (password.Length > 0) { password = Encryption.Decrypt(password); } bool wrongPassword = false; while (true) { if (!server.savePassword || wrongPassword) { // The user must input the password. formEnterPassword dlg = new formEnterPassword(); if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) { return(false); } password = dlg.Password; } try { hMailServer.Account account = app.Authenticate(server.userName, password); if (account == null) { // Wrong password, try again. MessageBox.Show("The specified user name or password is incorrect.", EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK); wrongPassword = true; } else { try { if (account.AdminLevel != eAdminLevel.hAdminLevelServerAdmin) { // Wrong password, try again. MessageBox.Show("hMailServer server administration rights are required to run hMailServer Administrator.", EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } return(true); } finally { Marshal.ReleaseComObject(account); } } } catch (Exception e) { // Wrong password, try again. MessageBox.Show("The specified user name or password is incorrect." + Environment.NewLine + e.Message, EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK); wrongPassword = true; } } }