Esempio n. 1
0
        public void CreateList(MailList list)
        {
            try
            {
                string domain = GetDomainName(list.Name);
                string account = GetAccountName(list.Name);

                svcMailListAdmin lists = new svcMailListAdmin();
                PrepareProxy(lists);

                GenericResult result = lists.AddList(AdminUsername, AdminPassword,
                    domain,
                    account,
                    list.ModeratorAddress,
                    list.Description
                );

                if (!result.Result)
                    throw new Exception(result.Message);

                List<string> settings = new List<string>();
                settings.Add(string.Concat("description=", list.Description));
                settings.Add(string.Concat("disabled=", !list.Enabled));
                settings.Add(string.Concat("moderator=", list.ModeratorAddress));
                settings.Add(string.Concat("password="******"requirepassword="******"whocanpost=anyone");
                        break;
                    case PostingMode.MembersCanPost:
                        settings.Add("whocanpost=subscribersonly");
                        break;
                    case PostingMode.ModeratorCanPost:
                        settings.Add("whocanpost=moderator");
                        break;
                }

                settings.Add(string.Concat("prependsubject=", list.EnableSubjectPrefix));
                settings.Add(string.Concat("maxmessagesize=", list.MaxMessageSize));
                settings.Add(string.Concat("maxrecipients=", list.MaxRecipientsPerMessage));
                settings.Add(string.Concat("subject=", list.SubjectPrefix));

                switch (list.ReplyToMode)
                {
                    case ReplyTo.RepliesToList:
                        settings.Add("replytolist=true");
                        break;
                }

                settings.Add(string.Concat("listtoaddress=", list.ListToAddress));
                settings.Add(string.Concat("listfromaddress=", list.ListFromAddress));
                settings.Add(string.Concat("listreplytoaddress=", list.ListReplyToAddress));
                settings.Add(string.Concat("digestmode=", list.DigestMode));
                settings.Add(string.Concat("sendsubscribe=", list.SendSubscribe));
                settings.Add(string.Concat("sendunsubscribe=", list.SendUnsubscribe));
                settings.Add(string.Concat("allowunsubscribe=", list.AllowUnsubscribe));
                settings.Add(string.Concat("disablelistcommand=", list.DisableListcommand));
                settings.Add(string.Concat("disablesubscribecommand=", list.DisableSubscribecommand));

                result = lists.SetRequestedListSettings(AdminUsername, AdminPassword,
                    domain,
                    account,
                    settings.ToArray()
                );

                if (!result.Result)
                    throw new Exception(result.Message);

                if (list.Members.Length > 0)
                {
                    result = lists.SetSubscriberList(AdminUsername, AdminPassword,
                        domain,
                        account,
                        list.Members
                    );

                    if (!result.Result)
                        throw new Exception(result.Message);
                }
            }
            catch (Exception ex)
            {
                if (ListExists(list.Name))
                {
                    DeleteList(list.Name);
                }
                Log.WriteError(ex);
                throw new Exception("Couldn't create mail list.", ex);
            }
        }