Beispiel #1
0
        /// <summary>
        /// Imports email addresses into a Recipient List
        /// </summary>
        /// <param name="emailArray">The email addresses to import.</param>
        /// <param name="invalidEmailAddresses">A list of all available email addresses that could not be parsed as a valid address</param>
        /// <returns>The number of email addresses imported as new work items. Duplicates are not part of this number.</returns>
        public int ImportEmailAddresses(string[] emailArray, out List <string> invalidEmailAddresses, out List <string> duplicateAddresses)
        {
            EmailAddresses importedItems = new EmailAddresses();

            invalidEmailAddresses = new List <string>();
            duplicateAddresses    = new List <string>();

            int numberOfNewItems = 0;

            foreach (string emailAddress in emailArray)
            {
                // TODO: This can be optimized by checking the
                // existance of these email addresses in batches

                // Clean address (this is done on save, so we need to make sure it's correct)
                string emailAddressCleaned = NewsLetterUtil.CleanEmailAddress(emailAddress);

                // Validate email address
                if (EmailSyntaxValidator.Validate(emailAddressCleaned) == false)
                {
                    // Invalid email address, skip it.
                    invalidEmailAddresses.Add(emailAddressCleaned);
                }
                else
                {
                    // Check if already imported. This is the quickest duplicate check
                    EmailAddress emailItem = importedItems.Find(emailAddressCleaned);
                    if (emailItem == null)
                    {
                        // Handle duplicates - try to load it first
                        emailItem = EmailAddress.Load(Id, emailAddressCleaned);
                        if (emailItem == null)
                        {
                            // Create it, and save it. It is automatically
                            // added to the WorkItems collection
                            emailItem = this.CreateEmailAddress(emailAddressCleaned);
                            // Save
                            emailItem.Save();
                            numberOfNewItems++;
                        }
                        else
                        {
                            // Duplicate
                            duplicateAddresses.Add(emailAddressCleaned);
                        }

                        // Add to imported collection, for quick
                        // in memory duplicate check
                        importedItems.Add(emailItem);
                    }
                }
            }

            ClearEmailAddressCount();

            return(numberOfNewItems);
        }
Beispiel #2
0
        /// <summary>
        /// Imports email addresses into a Recipient List
        /// </summary>
        /// <param name="emailArray">The email addresses to import.</param>
        /// <param name="invalidEmailAddresses">A list of all available email addresses that could not be parsed as a valid address</param>
        /// <returns>The number of email addresses imported as new work items. Duplicates are not part of this number.</returns>
        public int ImportEmailAddresses(string[] emailArray, out List<string> invalidEmailAddresses, out List<string> duplicateAddresses)
        {
            EmailAddresses importedItems = new EmailAddresses();
            invalidEmailAddresses = new List<string>();
            duplicateAddresses = new List<string>();

            int numberOfNewItems = 0;
            foreach (string emailAddress in emailArray)
            {
                // TODO: This can be optimized by checking the
                // existance of these email addresses in batches

                // Clean address (this is done on save, so we need to make sure it's correct)
                string emailAddressCleaned = NewsLetterUtil.CleanEmailAddress(emailAddress);

                // Validate email address
                if (EmailSyntaxValidator.Validate(emailAddressCleaned) == false)
                {
                    // Invalid email address, skip it.
                    invalidEmailAddresses.Add(emailAddressCleaned);
                }
                else
                {
                    // Check if already imported. This is the quickest duplicate check
                    EmailAddress emailItem = importedItems.Find(emailAddressCleaned);
                    if (emailItem == null)
                    {
                        // Handle duplicates - try to load it first
                        emailItem = EmailAddress.Load(Id, emailAddressCleaned);
                        if (emailItem == null)
                        {

                            // Create it, and save it. It is automatically
                            // added to the WorkItems collection
                            emailItem = this.CreateEmailAddress(emailAddressCleaned);
                            // Save
                            emailItem.Save();
                            numberOfNewItems++;
                        }
                        else
                        {
                            // Duplicate
                            duplicateAddresses.Add(emailAddressCleaned);
                        }

                        // Add to imported collection, for quick
                        // in memory duplicate check
                        importedItems.Add(emailItem);
                    }
                }
            }

            ClearEmailAddressCount();

            return numberOfNewItems;
        }