public async Task SendEmailAsync(string to, NotificationEvent @event) { var templateData = await _repository.GetEmailTemplateAsync(@event.EventName); if (templateData == null || !templateData.IsEnabled) { return; } var emailSubject = _templateEngine.Execute(templateData.Subject, @event.Parameters); string bodyHtml; switch (templateData.ContentsType) { case ContentsType.Markdown: var markdown = _templateEngine.Execute(templateData.Contents, @event.Parameters); bodyHtml = _markdownParser.ToTrustedHtml(markdown); break; case ContentsType.Html: bodyHtml = _templateEngine.Execute(templateData.Contents, @event.Parameters); break; default: throw new NotSupportedException($"Contents Type {templateData.ContentsType} is not supported for emails."); } string emailHtml; var layoutData = await _repository.GetLayoutHtmlAsync(); if (string.IsNullOrWhiteSpace(layoutData)) { emailHtml = bodyHtml; } else { var layoutParameters = new Dictionary <string, string>(@event.Parameters) { { "body", bodyHtml } }; emailHtml = _templateEngine.Execute(layoutData, layoutParameters); } var result = new ReadyEmail( @event.EventName, to, templateData.From, templateData.Cc, templateData.Bcc, emailSubject, emailHtml); await SendEmailSmtpAsync(result); }
public Task <NotificationEvent> BlogCommentAuthorAsync(PostData post, CommentData comment) { var notificationEvent = new NotificationEvent( "blog.comment.author", new Dictionary <string, string> { { "post.url", GetPostUrl(post) }, { "post.title", post.Title }, { "post.author", post.Author }, { "comment.author", comment.Author }, { "comment.url", GetCommentUrl(post, comment) }, { "comment.html", _markdownParser.ToUntrustedHtml(comment.Markdown) }, }); return(Task.FromResult(notificationEvent)); }