예제 #1
0
        public static Address GetAddressesOrDomain(this IAddressManager client, MailAddress address, EntityStatus?status)
        {
            if (address == null)
            {
                throw new ArgumentNullException("address");
            }

            return(client.GetAddressesOrDomain(address.Address, status));
        }
예제 #2
0
        internal Address GetAddress(DirectAddress address)
        {
            Debug.Assert(m_settings.HasAddressManager);

            IAddressManager client = CreateAddressManagerClient();

            using (client as IDisposable)
            {
                if (AddressDomainSearchEnabled(m_settings.AddressManager))
                {
                    return(client.GetAddressesOrDomain(address, EntityStatus.Enabled));
                }
                return(client.GetAddress(address, EntityStatus.Enabled));
            }
        }
예제 #3
0
        public static Address GetAddressesOrDomain(this IAddressManager client, string emailAddress, EntityStatus?status)
        {
            if (string.IsNullOrEmpty(emailAddress))
            {
                throw new ArgumentException("value was null or empty", "emailAddress");
            }

            Address[] addresses = client.GetAddressesOrDomain(new string[] { emailAddress }, status);
            if (addresses.IsNullOrEmpty())
            {
                return(null);
            }

            return(addresses[0]);
        }
예제 #4
0
        internal Address[] GetAddresses(DirectAddressCollection addresses)
        {
            Debug.Assert(_settings.HasAddressManager);

            List <Address> managedAddresses;

            string[] emailAddresses = addresses
                                      .Select(address => address.Address)
                                      .ToArray();

            if (_addressCache != null)
            {
                managedAddresses = _addressCache.Get(emailAddresses);

                if (managedAddresses != null && managedAddresses.Count(d => d != null) == addresses.Count())
                {
                    managedAddresses.RemoveAll(d => d == null);
                    return(managedAddresses.ToArray());
                }
            }

            IAddressManager client = CreateAddressManagerClient();

            using (client as IDisposable)
            {
                Address[] addressesFound;

                if (_enabledDomainSearch)
                {
                    addressesFound = client.GetAddressesOrDomain(emailAddresses, EntityStatus.Enabled);
                }
                else
                {
                    addressesFound = client.GetAddresses(emailAddresses, EntityStatus.Enabled);
                }

                managedAddresses = addressesFound.ToList();
            }

            if (_addressCache != null)
            {
                _addressCache.Put(managedAddresses);
            }

            return(managedAddresses.ToArray());
        }
예제 #5
0
        internal Address[] GetAddresses(DirectAddressCollection addresses)
        {
            Debug.Assert(m_settings.HasAddressManager);

            string[] emailAddresses = (
                from address in addresses
                select address.Address
                ).ToArray();

            IAddressManager client = CreateAddressManagerClient();

            using (client as IDisposable)
            {
                if (AddressDomainSearchEnabled(m_settings.AddressManager))
                {
                    return(client.GetAddressesOrDomain(emailAddresses, EntityStatus.Enabled));
                }
                return(client.GetAddresses(emailAddresses, EntityStatus.Enabled));
            }
        }
예제 #6
0
        internal Address GetAddress(DirectAddress address)
        {
            Debug.Assert(_settings.HasAddressManager);

            Address managedAddress;

            if (_addressCache != null)
            {
                managedAddress = _addressCache.Get(address.Address);
                if (managedAddress != null)
                {
                    return(managedAddress);
                }
            }

            IAddressManager client = CreateAddressManagerClient();

            using (client as IDisposable)
            {
                if (_enabledDomainSearch)
                {
                    managedAddress = client.GetAddressesOrDomain(address, EntityStatus.Enabled);
                }
                else
                {
                    managedAddress = client.GetAddress(address, EntityStatus.Enabled);
                }
            }


            if (_addressCache != null)
            {
                _addressCache.Put(managedAddress);
            }

            return(managedAddress);
        }