/// <summary> /// Writes the email preview in the given format. /// </summary> /// <returns>The content type for the HTTP response.</returns> public string ExecuteResult(TextWriter writer, Microsoft.AspNetCore.Http.Features.IHttpRequestFeature requestFeature, string format = null) { var result = Renderer.Render(Email, requestFeature); var mailMessage = Parser.Parse(result, Email); // no special requests; render what's in the template if (string.IsNullOrEmpty(format)) { if (!mailMessage.IsBodyHtml) { writer.WriteAsync(result); return(TextContentType); } var template = Extract(result); template.Write(writer); return(HtmlContentType); } // Check if alternative var alternativeContentType = CheckAlternativeViews(writer, mailMessage, format); if (!string.IsNullOrEmpty(alternativeContentType)) { return(alternativeContentType); } if (format == "text") { if (mailMessage.IsBodyHtml) { throw new NotSupportedException("No text view available for this email"); } writer.Write(result); return(TextContentType); } if (format == "html") { if (!mailMessage.IsBodyHtml) { throw new NotSupportedException("No html view available for this email"); } var template = Extract(result); template.Write(writer); return(HtmlContentType); } throw new NotSupportedException(string.Format("Unsupported format {0}", format)); }
public EmailParser(IEmailViewRenderer alternativeViewRenderer, Microsoft.AspNetCore.Http.Features.IHttpRequestFeature requsetFeature) { this.alternativeViewRenderer = alternativeViewRenderer; _requsetFeature = requsetFeature; }