public MailGroupData CreateMailGroup(string name, int domain_id, List <int> address_ids) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("Invalid mailgroup name.", "name"); } if (domain_id < 0) { throw new ArgumentException("Invalid domain id.", "domain_id"); } if (name.Length > 64) { throw new ArgumentException("Local part of mailgroup exceed limitation of 64 characters.", "name"); } if (!Parser.IsEmailLocalPartValid(name)) { throw new ArgumentException("Incorrect group name.", "name"); } if (!address_ids.Any()) { throw new ArgumentException("Empty collection of address_ids.", "address_ids"); } var domain = MailServer.GetWebDomain(domain_id, MailServerFactory); var mailgroup_name = name.ToLowerInvariant(); var mailgroup = MailServer.CreateMailGroup(mailgroup_name, domain, address_ids, MailServerFactory); return(mailgroup.ToMailGroupData()); }
public MailGroupData CreateMailGroup(string name, int domain_id, List <int> address_ids) { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } if (string.IsNullOrEmpty(name)) { throw new ArgumentException(@"Invalid mailgroup name.", "name"); } if (domain_id < 0) { throw new ArgumentException(@"Invalid domain id.", "domain_id"); } if (name.Length > 64) { throw new ArgumentException(@"Local part of mailgroup exceed limitation of 64 characters.", "name"); } if (!Parser.IsEmailLocalPartValid(name)) { throw new ArgumentException(@"Incorrect group name.", "name"); } if (!address_ids.Any()) { throw new ArgumentException(@"Empty collection of address_ids.", "address_ids"); } var domain = MailServer.GetWebDomain(domain_id, MailServerFactory); if (domain.Tenant == Defines.SHARED_TENANT_ID) { throw new InvalidOperationException("Creating mail group is not allowed for shared domain."); } var mailgroupName = name.ToLowerInvariant(); var mailgroup = MailServer.CreateMailGroup(mailgroupName, domain, address_ids, MailServerFactory); MailBoxManager.CachedAccounts.ClearAll(); return(mailgroup.ToMailGroupData()); }