/// <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); }
/// <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); }