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