public async Task SendBulkEmailToAllDeacons(AnnouncementViewModel viewModel, string username) { var user = _unitOfWork.AppUserRepository.FindUserByEmail(username); var deacons = _unitOfWork.AppUserRepository.FindUsersByRole(enums.AppUserRole.Deacon); var emailContacts = new List <EmailContact>(); var emailClient = new EmailWrapperClient(); var email = new EmailContact { FromEmailAddress = user.EmailAddress, Subject = viewModel.Title, PlainTextBody = HtmlRemoval.ConvertHtmlToPlainText(viewModel.AnnouncementHtml), HtmlBody = viewModel.AnnouncementHtml }; foreach (var deacon in deacons) { emailContacts.Add(new EmailContact { ToEmailAddress = deacon.EmailAddress, ReceiverName = deacon.FullName }); } var response = await emailClient.SendMultipleEmailsAsync(emailContacts, email); }
public async Task <ActionResult> SendEmail(EmailViewModel emailViewModel) { if (!ModelState.IsValid) { return(View(emailViewModel)); } emailViewModel.UserEmail = User.Identity.Name; // sanitize the html from user emailViewModel.EmailContact.HtmlBody = AntiXssEncoder.HtmlEncode(emailViewModel.EmailContact.HtmlBody, false); emailViewModel.EmailContact.HtmlBody = WebUtility.HtmlDecode(emailViewModel.EmailContact.HtmlBody); if (emailViewModel == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var client = new EmailWrapperClient(); if (emailViewModel.IsTesting && !string.IsNullOrEmpty(emailViewModel.TestToEmail)) { emailViewModel.EmailContact.ToEmailAddress = emailViewModel.TestToEmail; emailViewModel.EmailContact.ReceiverName = "Deacon App Test SendGrid"; } emailViewModel.EmailContact.PlainTextBody = HtmlRemoval.ConvertHtmlToPlainText(emailViewModel.EmailContact.HtmlBody); if (emailViewModel.Bulk) { emailViewModel = await _service.SendBulkEmailsAsync(emailViewModel, client, User.Identity.Name); } else // send email to one member { emailViewModel = await _service.SendSingleEmailAsync(emailViewModel, client, User.Identity.Name); } return(View("EmailComplete", emailViewModel)); }
public async Task <EmailViewModel> SendBulkEmailsAsync(EmailViewModel emailViewModel, EmailWrapperClient client, string username) { Response response; var bulkContacts = GetBulkEmailContacts(emailViewModel); try { response = await client.SendMultipleEmailsAsync(bulkContacts, emailViewModel.EmailContact); if (IsResponseOk(response)) { //GetStatusNotification(EmailStatus.BulkEmailsDelivered); emailViewModel.StatusNotification = GetStatusNotification(EmailStatus.BulkEmailsDelivered); emailViewModel.EmailContact.DateSent = DateTime.Now; StoreBulkEmailContacts(bulkContacts, username); } else { //GetStatusNotification(EmailStatus.BulkEmailsNotDelivered); emailViewModel.StatusNotification = GetStatusNotification(EmailStatus.BulkEmailsNotDelivered); } } catch (Exception ex) { // log caught exception with Elmah ErrorSignal.FromCurrentContext().Raise(ex); emailViewModel.StatusNotification = GetStatusNotification(EmailStatus.BulkEmailsNotDelivered); } if (emailViewModel.StatusNotification != null) { emailViewModel.HasStatusNotification = true; } return(emailViewModel); }
public async Task <EmailViewModel> SendSingleEmailAsync(EmailViewModel emailViewModel, EmailWrapperClient client, string username) { Response response; try { response = await client.SendSingleEmailAsync(emailViewModel.EmailContact); if (IsResponseOk(response)) { emailViewModel.StatusNotification = GetStatusNotification(EmailStatus.EmailDelivered, emailViewModel.EmailContact.ReceiverName); emailViewModel.EmailContact.DateSent = DateTime.Now; StoreEmailContact(emailViewModel.EmailContact, username); } else { emailViewModel.StatusNotification = GetStatusNotification(EmailStatus.EmailNotDelivered, emailViewModel.EmailContact.ReceiverName); } } catch (Exception ex) { // log caught exception with Elmah ErrorSignal.FromCurrentContext().Raise(ex); emailViewModel.StatusNotification = GetStatusNotification(EmailStatus.EmailNotDelivered, emailViewModel.EmailContact.ReceiverName); } if (emailViewModel.StatusNotification != null) { emailViewModel.HasStatusNotification = true; } return(emailViewModel); }