public async Task <string> RenderMailViewAsync(ControllerContext controllerContext, MailTemplate template, object model)
        {
            var viewResult = _viewEngine.FindView(controllerContext, template.ToString(), false);

            if (!viewResult.Success)
            {
                throw new ArgumentOutOfRangeException(nameof(template));
            }

            var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), controllerContext.ModelState);
            var tempData = _tempDataFactory?.GetTempData(controllerContext.HttpContext);

            using (StringWriter sw = new StringWriter())
            {
                viewData.Model = model;
                ViewContext viewContext = new ViewContext(controllerContext,
                                                          viewResult.View, viewData, tempData, sw, new HtmlHelperOptions());

                await viewResult.View.RenderAsync(viewContext);

                return(sw.GetStringBuilder().ToString());
            }
        }