Example #1
0
        public async Task <IActionResult> SendEmail(SendEmailTemplateViewModel model, string returnUrl)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageEmailTemplates))
            {
                return(Forbid());
            }

            if (ModelState.IsValid)
            {
                var message = _emailTemplatesService.CreateMessageFromViewModel(model);

                var result = await _smtpService.SendAsync(message);

                if (!result.Succeeded)
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("*", error.ToString());
                    }
                }
                else
                {
                    _notifier.Success(H["Message sent successfully"]);
                    return(Redirect(returnUrl));
                }
            }

            return(View(model));
        }
Example #2
0
        public async Task <IActionResult> SendEmail(string id, string contentItemId, string returnUrl)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageEmailTemplates))
            {
                return(Forbid());
            }

            var templatesDocument = await _templatesManager.GetEmailTemplatesDocumentAsync();

            if (!templatesDocument.Templates.ContainsKey(id))
            {
                return(Redirect(returnUrl));
            }

            var template    = templatesDocument.Templates[id];
            var contentItem = await _contentManager.GetAsync(contentItemId);

            var model = new SendEmailTemplateViewModel
            {
                Name       = template.Name,
                Author     = await _emailTemplatesService.RenderLiquid(template.AuthorExpression, contentItem),
                Sender     = await _emailTemplatesService.RenderLiquid(template.SenderExpression, contentItem),
                ReplyTo    = await _emailTemplatesService.RenderLiquid(template.ReplyToExpression, contentItem),
                Recipients = await _emailTemplatesService.RenderLiquid(template.RecipientsExpression, contentItem),
                CC         = await _emailTemplatesService.RenderLiquid(template.CCExpression, contentItem),
                BCC        = await _emailTemplatesService.RenderLiquid(template.BCCExpression, contentItem),
                Subject    = await _emailTemplatesService.RenderLiquid(template.SubjectExpression, contentItem),
                Body       = await _emailTemplatesService.RenderLiquid(template.Body, contentItem),
                IsBodyHtml = template.IsBodyHtml,
            };

            ViewData["returnUrl"] = returnUrl;

            return(View(model));
        }
Example #3
0
        public MailMessage CreateMessageFromViewModel(SendEmailTemplateViewModel sendEmail)
        {
            var message = new MailMessage
            {
                To      = sendEmail.Recipients,
                Bcc     = sendEmail.BCC,
                Cc      = sendEmail.CC,
                ReplyTo = sendEmail.ReplyTo
            };

            var author = sendEmail.Author;
            var sender = sendEmail.Sender;

            if (!string.IsNullOrWhiteSpace(author))
            {
                message.From = author.Trim();
            }

            if (!String.IsNullOrWhiteSpace(sender))
            {
                message.Sender = sender.Trim();
            }

            if (!String.IsNullOrWhiteSpace(sendEmail.Subject))
            {
                message.Subject = sendEmail.Subject;
            }

            if (!String.IsNullOrWhiteSpace(sendEmail.Body))
            {
                message.Body = sendEmail.Body;
            }

            message.IsBodyHtml = sendEmail.IsBodyHtml;

            return(message);
        }