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