/// <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));
        }
示例#2
0
 public EmailParser(IEmailViewRenderer alternativeViewRenderer, Microsoft.AspNetCore.Http.Features.IHttpRequestFeature requsetFeature)
 {
     this.alternativeViewRenderer = alternativeViewRenderer;
     _requsetFeature = requsetFeature;
 }