Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }