public ServerMailboxData CreateMyCommonDomainMailbox(string name) { if (!SetupInfo.IsVisibleSettings("AdministrationPage") || !SetupInfo.IsVisibleSettings("MailCommonDomain") || CoreContext.Configuration.Standalone) { throw new Exception("Common domain is not available"); } var serverDomainEngine = new ServerDomainEngine(Tenant, User); var domain = serverDomainEngine.GetCommonDomain(); if (domain == null) { throw new SecurityException("Domain not found."); } var userInfo = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); return(CreateMailbox(userInfo.DisplayUserName(), name, domain.Id, userInfo.ID.ToString())); }
public ServerFullData GetMailServerFullInfo() { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } var fullServerInfo = new ServerFullData(); var mailboxDataList = new List <ServerMailboxData>(); var mailgroupDataList = new List <ServerDomainGroupData>(); var domainEngine = new ServerDomainEngine(Tenant, User); using (var daoFactory = new DaoFactory()) { var server = GetMailServer(daoFactory); var domains = domainEngine.GetDomains(daoFactory); var mailboxDao = daoFactory.CreateMailboxDao(); var mailboxes = mailboxDao.GetMailBoxes(new TenantServerMailboxesExp(Tenant)); var serverAddressDao = daoFactory.CreateServerAddressDao(Tenant); var addresses = serverAddressDao.GetList(); foreach (var mailbox in mailboxes) { var address = addresses.FirstOrDefault( a => a.MailboxId == mailbox.Id && a.IsAlias == false && a.IsMailGroup == false); if (address == null) { continue; } var domain = domains.FirstOrDefault(d => d.Id == address.DomainId); if (domain == null) { continue; } var serverAddressData = ServerMailboxEngine.ToServerDomainAddressData(address, domain); var aliases = addresses.Where(a => a.MailboxId == mailbox.Id && a.IsAlias && !a.IsMailGroup) .ToList() .ConvertAll(a => ServerMailboxEngine.ToServerDomainAddressData(a, domain)); mailboxDataList.Add(ServerMailboxEngine.ToMailboxData(mailbox, serverAddressData, aliases)); } var serverGroupDao = daoFactory.CreateServerGroupDao(Tenant); var groups = serverGroupDao.GetList(); foreach (var serverGroup in groups) { var address = addresses.FirstOrDefault( a => a.Id == serverGroup.AddressId && !a.IsAlias && a.IsMailGroup); if (address == null) { continue; } var domain = domains.FirstOrDefault(d => d.Id == address.DomainId); if (domain == null) { continue; } var email = string.Format("{0}@{1}", address.AddressName, domain.Name); var serverGroupAddress = ServerMailboxEngine.ToServerDomainAddressData(address, email); var serverGroupAddresses = serverAddressDao.GetGroupAddresses(serverGroup.Id) .ConvertAll(a => ServerMailboxEngine.ToServerDomainAddressData(a, string.Format("{0}@{1}", a.AddressName, domain.Name))); mailgroupDataList.Add(ServerMailgroupEngine.ToServerDomainGroupData(serverGroup.Id, serverGroupAddress, serverGroupAddresses)); } fullServerInfo.Server = server; fullServerInfo.Domains = domains; fullServerInfo.Mailboxes = mailboxDataList; fullServerInfo.Mailgroups = mailgroupDataList; } return(fullServerInfo); }