Пример #1
0
		public void UpdateEmailAddresses(Mailbox mailbox)
		{
			ProxyAddressCollection emailAddresses = mailbox.EmailAddresses;
			for (int i = emailAddresses.Count - 1; i >= 0; i--)
			{
				if (emailAddresses[i] is SmtpProxyAddress && !((SmtpProxyAddress)emailAddresses[i]).IsPrimaryAddress)
				{
					emailAddresses.RemoveAt(i);
				}
			}
			if (this.EmailAddresses != null)
			{
				foreach (string text in this.EmailAddresses)
				{
					ProxyAddress proxyAddress = ProxyAddress.Parse(text);
					if (proxyAddress is InvalidProxyAddress)
					{
						InvalidProxyAddress invalidProxyAddress = proxyAddress as InvalidProxyAddress;
						throw new FaultException(invalidProxyAddress.ParseException.Message);
					}
					if (emailAddresses.Contains(proxyAddress))
					{
						throw new FaultException(string.Format(OwaOptionStrings.DuplicateProxyAddressError, text));
					}
					emailAddresses.Add(proxyAddress);
				}
			}
			base[MailEnabledRecipientSchema.EmailAddresses] = emailAddresses;
		}
        public static void UpdateEmailAddresses(DataRow inputRow, DataTable dataTable, DataObjectStore store)
        {
            MailContact            mailContact    = store.GetDataObject("MailContact") as MailContact;
            ProxyAddressCollection emailAddresses = mailContact.EmailAddresses;
            IEnumerable <object>   enumerable     = inputRow["FilteredEmailAddresses"] as IEnumerable <object>;
            string text = inputRow["ExternalEmailAddress"] as string;

            if (enumerable != null)
            {
                for (int i = emailAddresses.Count - 1; i >= 0; i--)
                {
                    if (emailAddresses[i] is SmtpProxyAddress && !((SmtpProxyAddress)emailAddresses[i]).IsPrimaryAddress)
                    {
                        emailAddresses.RemoveAt(i);
                    }
                }
            }
            if (text != null)
            {
                ProxyAddressBase proxyAddressBase = ProxyAddress.Parse(text).ToPrimary();
                if (!(proxyAddressBase is InvalidProxyAddress) && mailContact.ExternalEmailAddress != proxyAddressBase)
                {
                    int num = emailAddresses.IndexOf((ProxyAddress)proxyAddressBase);
                    if (num >= 0)
                    {
                        emailAddresses.MakePrimary(num);
                    }
                    else
                    {
                        emailAddresses.Add(proxyAddressBase);
                    }
                    int num2 = emailAddresses.IndexOf(mailContact.ExternalEmailAddress);
                    if (num2 >= 0 && (!(emailAddresses[num2] is SmtpProxyAddress) || !emailAddresses[num2].IsPrimaryAddress))
                    {
                        emailAddresses.RemoveAt(num2);
                    }
                }
            }
            if (enumerable != null)
            {
                foreach (object obj in enumerable)
                {
                    string       text2        = (string)obj;
                    ProxyAddress proxyAddress = ProxyAddress.Parse(text2);
                    if (proxyAddress is InvalidProxyAddress)
                    {
                        InvalidProxyAddress invalidProxyAddress = proxyAddress as InvalidProxyAddress;
                        throw new FaultException(invalidProxyAddress.ParseException.Message);
                    }
                    if (emailAddresses.Contains(proxyAddress))
                    {
                        throw new FaultException(string.Format(Strings.DuplicateProxyAddressError, text2));
                    }
                    emailAddresses.Add(proxyAddress);
                }
            }
            inputRow["EmailAddresses"] = emailAddresses;
            store.SetModifiedColumns(new List <string>
            {
                "EmailAddresses"
            });
        }