Exemple #1
0
        private void AddAutoResponderInfo(MailAccount mailbox)
        {
            TreeNode autoresponses = deliveryConfig.ChildNodes["autoresponses"];

            if (autoresponses == null)
            {
                autoresponses          = new TreeNode();
                autoresponses.NodeName = "autoresponses";
                deliveryConfig.ChildNodes.Add(autoresponses);
            }

            autoresponses["enabled"] = mailbox.ResponderEnabled ? "1" : "0";

            if (mailbox.ResponderEnabled)
            {
                autoresponses["subject"] = mailbox.ResponderSubject;
                autoresponses["body"]    = mailbox.ResponderMessage;

                if (!string.IsNullOrEmpty(mailbox.ReplyTo))
                {
                    autoresponses["usereplyto"] = "1";
                    autoresponses["replyto"]    = mailbox.ReplyTo;
                }
                else
                {
                    autoresponses["usereplyto"] = "0";
                    autoresponses["replyto"]    = string.Empty;
                }
            }
            else
            {
                autoresponses["subject"] = string.Empty;
                autoresponses["body"]    = string.Empty;
            }
        }
Exemple #2
0
        public void Read(MailAccount mailbox)
        {
            userConfig["domain"]  = GetDomainName(mailbox.Name);
            userConfig["enabled"] = mailbox.Enabled ? "1" : "0";
            userConfig["user"]    = GetAccountName(mailbox.Name);
            userConfig["pass"]    = mailbox.Password;
            // forwardings
            if (mailbox.ForwardingAddresses != null)
            {
                AddForwardingInfo(mailbox.ForwardingAddresses, mailbox.DeleteOnForward);
            }

            AddAutoResponderInfo(mailbox);
        }
Exemple #3
0
        public void CreateAccount(MailAccount mailbox)
        {
            Tree       users = AMSHelper.GetUsersConfig();
            AmsMailbox accnt = new AmsMailbox(mailbox.Name);

            if (accnt.Load(users))
            {
                throw new Exception("Mailbox is already registered.");
            }

            accnt.Read(mailbox);

            if (!accnt.Save(users))
            {
                throw new Exception("Couldn't create a mailbox.");
            }
        }
Exemple #4
0
        public MailAccount ToMailAccount()
        {
            MailAccount account = new MailAccount();

            account.Name     = string.Concat(userConfig["user"], "@", userConfig["domain"]);
            account.Enabled  = userConfig["enabled"] == "1" ? true : false;
            account.Password = userConfig["pass"];

            // read forwardings
            TreeNode redirection = deliveryConfig.ChildNodes["redirection"];

            if (redirection != null)
            {
                TreeNode redirections = redirection.ChildNodes["redirections"];

                if (redirections != null)
                {
                    List <string> list = new List <string>();
                    foreach (TreeNode node in redirections.ChildNodes)
                    {
                        list.Add(node.NodeValue);
                    }

                    account.ForwardingAddresses = list.ToArray();
                }
            }

            // read autoresponder
            TreeNode autoresponses = deliveryConfig.ChildNodes["autoresponses"];

            if (autoresponses != null)
            {
                account.ResponderEnabled = autoresponses["enabled"] == "1" ? true : false;
                account.ResponderSubject = autoresponses["subject"];
                account.ResponderMessage = autoresponses["body"];

                if (autoresponses["usereplyto"] == "1")
                {
                    account.ReplyTo = autoresponses["replyto"];
                }
            }

            return(account);
        }
Exemple #5
0
        public void UpdateAccount(MailAccount mailbox)
        {
            Tree       config     = AMSHelper.GetUsersConfig();
            AmsMailbox amsMailbox = new AmsMailbox(mailbox.Name);

            if (amsMailbox.Load(config))
            {
                amsMailbox.LoadAccountConfig();
                amsMailbox.Read(mailbox);

                if (!amsMailbox.Save(config))
                {
                    throw new Exception("Couldn't update specified mailbox.");
                }
            }
            else
            {
                throw new Exception("Couldn't find specified mailbox.");
            }
        }
Exemple #6
0
        public override void CreateAccount(MailAccount mailbox)
        {
            try
            {
                svcUserAdmin users = new svcUserAdmin();
                PrepareProxy(users);

                GenericResult1 result = users.AddUser(AdminUsername, AdminPassword,
                                                      mailbox.Name,
                                                      mailbox.Password,
                                                      GetDomainName(mailbox.Name),
                                                      mailbox.FirstName,
                                                      mailbox.LastName,
                                                      false //domain admin is false
                                                      );

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

                // set forwarding settings
                result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword,
                                                        mailbox.Name, mailbox.DeleteOnForward,
                                                        (mailbox.ForwardingAddresses != null ? String.Join(", ", mailbox.ForwardingAddresses) : ""));

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

                // set additional settings
                result = users.SetRequestedUserSettings(AdminUsername, AdminPassword,
                                                        mailbox.Name,
                                                        new string[]
                {
                    "isenabled=" + mailbox.Enabled.ToString(),
                    "maxsize=" + mailbox.MaxMailboxSize.ToString(),
                    "passwordlocked=" + mailbox.PasswordLocked.ToString(),
                    "replytoaddress=" + (mailbox.ReplyTo != null ? mailbox.ReplyTo : ""),
                    "signature=" + (mailbox.Signature != null ? mailbox.Signature : ""),
                    "spamforwardoption=none"
                });

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

                // set autoresponder settings
                result = users.UpdateUserAutoResponseInfo(AdminUsername, AdminPassword,
                                                          mailbox.Name,
                                                          mailbox.ResponderEnabled,
                                                          (mailbox.ResponderSubject != null ? mailbox.ResponderSubject : ""),
                                                          (mailbox.ResponderMessage != null ? mailbox.ResponderMessage : ""));

                if (!result.Result)
                {
                    throw new Exception(result.Message);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Could not create mailbox", ex);
            }
        }
Exemple #7
0
        public override void UpdateAccount(MailAccount mailbox)
        {
            try
            {
                //get original account
                MailAccount account = GetAccount(mailbox.Name);

                svcUserAdmin users = new svcUserAdmin();
                PrepareProxy(users);



                string strPassword = mailbox.Password;

                //Don't change password. Get it from mail server.
                if (!mailbox.ChangePassword)
                {
                    strPassword = account.Password;
                }

                GenericResult1 result = users.UpdateUser(AdminUsername, AdminPassword,
                                                         mailbox.Name,
                                                         strPassword,
                                                         mailbox.FirstName,
                                                         mailbox.LastName,
                                                         account.IsDomainAdmin
                                                         );

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

                // set forwarding settings
                result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword,
                                                        mailbox.Name, mailbox.DeleteOnForward,
                                                        (mailbox.ForwardingAddresses != null ? String.Join(", ", mailbox.ForwardingAddresses) : ""));

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

                // set additional settings
                result = users.SetRequestedUserSettings(AdminUsername, AdminPassword,
                                                        mailbox.Name,
                                                        new string[]
                {
                    "isenabled=" + mailbox.Enabled.ToString(),
                    "maxsize=" + mailbox.MaxMailboxSize.ToString(),
                    "passwordlocked=" + mailbox.PasswordLocked.ToString(),
                    "replytoaddress=" + (mailbox.ReplyTo != null ? mailbox.ReplyTo : ""),
                    "signature=" + (mailbox.Signature != null ? mailbox.Signature : ""),
                    "spamforwardoption=none"
                });

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

                // set autoresponder settings
                result = users.UpdateUserAutoResponseInfo(AdminUsername, AdminPassword,
                                                          mailbox.Name,
                                                          mailbox.ResponderEnabled,
                                                          (mailbox.ResponderSubject != null ? mailbox.ResponderSubject : ""),
                                                          (mailbox.ResponderMessage != null ? mailbox.ResponderMessage : ""));

                if (!result.Result)
                {
                    throw new Exception(result.Message);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Could not update mailbox", ex);
            }
        }