Пример #1
0
        /// <summary>
        /// Validates the input email request.
        /// </summary>
        /// <param name="request">The <see cref="Services.EmailService.MessageContracts.SendEmailRequest"/> to be validated.</param>
        /// <returns>A <see cref="Services.EmailService.MessageContracts.InvalidRecipients"/> that contains the information if Recipients address is invalid or with bad domain.</returns>
        private InvalidRecipients ValidateEmailAddress(SendEmailRequest request)
        {
            InvalidRecipients resplist = new InvalidRecipients();

            Logger.Info("[ValidateEmailAddress] validating Recipients email addresses.");
            Logger.Info(request.ToString());

            //Validate domain
            foreach (var email in request.Recipients.Where(email => _badDomainCheckProvider.IsBadDomain(email)))
            {
                Logger.ErrorFormat("The recipient email address [{0}] is not a supported domain.", email);
                resplist.BadDomains.Add(email);
            }
            if (request.CarbonCopyList == null)
            {
                return(resplist);
            }

            //validate bad domain
            foreach (var email in request.CarbonCopyList.Where(email => _badDomainCheckProvider.IsBadDomain(email)))
            {
                Logger.ErrorFormat("The cclist email address [{0}] is not a supported domain.", email);
                resplist.BadDomains.Add(email);
            }
            return(resplist);
        }
Пример #2
0
        /// <summary>
        /// Validates the input email request.
        /// </summary>
        /// <param name="request">The <see cref="Services.EmailService.MessageContracts.SendEmailRequest"/> to be validated.</param>
        /// <returns><see langword="true"/> if <paramref name="request"/> is a valid request else <see langword="false"/>.</returns>
        private bool ValidateEmailParameters(SendEmailRequest request)
        {
            Logger.Info("[ValidateEmailParameters] validating input parameters.");
            Logger.Info(request.ToString());
            if (request.Subject != null)
            {
                request.Subject = request.Subject.Trim();
            }
            if (request.Body != null)
            {
                request.Body = request.Body.Trim();
            }
            if (request.FromEmailAddress != null)
            {
                request.FromEmailAddress = request.FromEmailAddress.Trim();
            }

            if (string.IsNullOrEmpty(request.Subject))
            {
                Logger.Error("The subject is empty.");
                return(false);
            }

            if (string.IsNullOrEmpty(request.Body))
            {
                Logger.Error("The email body content is empty.");
                return(false);
            }

            if (string.IsNullOrEmpty(request.FromEmailAddress))
            {
                Logger.Error("The from email address is empty.");
                return(false);
            }

            if (request.Recipients == null || !request.Recipients.Any())
            {
                Logger.Error("The recipients list is empty.");
                return(false);
            }

            if (!IsValidEmailAddress(request.FromEmailAddress))
            {
                Logger.ErrorFormat("The from email address [{0}] is invalid.", request.FromEmailAddress);
                return(false);
            }

            foreach (var email in request.Recipients.Where(email => !IsValidEmailAddress(email)))
            {
                Logger.ErrorFormat("The recipient email address [{0}] is invalid.", email);
                return(false);
            }

            if (request.CarbonCopyList != null && request.CarbonCopyList.Any())
            {
                foreach (var email in request.CarbonCopyList.Where(email => !IsValidEmailAddress(email)))
                {
                    Logger.ErrorFormat("The cclist email address [{0}] is invalid.", email);
                    return(false);
                }
            }

            var attachments        = request.Attachments;
            var invalidAttachments = false;

            if (attachments != null && attachments.Any())
            {
                if (attachments.Any(attachment => string.IsNullOrEmpty(attachment.Content) || string.IsNullOrEmpty(attachment.Name)))
                {
                    Logger.Error("The attachment is invalid.");
                    return(false);
                }
                foreach (var attachment in attachments)
                {
                    if (attachment.Content != null)
                    {
                        attachment.Content = attachment.Content.Trim();
                    }
                    if (attachment.Name != null)
                    {
                        attachment.Name = attachment.Name.Trim();
                    }
                    if (!string.IsNullOrEmpty(attachment.Content) && !string.IsNullOrEmpty(attachment.Name))
                    {
                        continue;
                    }
                    invalidAttachments = true;
                    break;
                }
            }

            if (invalidAttachments)
            {
                Logger.Error("The attachment is invalid.");
                return(false);
            }

            return(true);
        }