Is their a solution to generate an email template using an ASP.NET MVC View without having to jump through hoops.
Let me elaborate jumping through hoops.
var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse);
var oldContext = HttpContext.Current;
HttpContext.Current = fakeContext;
var html = new HtmlHelper(new ViewContext(fakeControllerContext,
new FakeView(), viewDataDictionary, new TempDataDictionary()),
new ViewPage());
html.RenderPartial(viewName, viewData, viewDataDictionary);
HttpContext.Current = oldContext;
The above code is using the current HttpContext to fake a new Context and render the page with RenderPartial, we shouldn't have to do this.
Another very detailed solution using ControllerContext and .Render: (IEmailTemplateService, Headers/Postback WorkAround) but pretty much doing the same thing with a lot more code.
I on the other hand, am looking for something that would just render a View without having to POST/GET and generates me a simple string that I can send off through my Email code. Something that doesn't run into errors such as posting headers twice or faking some piece of data.
EX:
//code which does not fire Render, RenderPartial... etc
var email = emailFramework.Create(viewData, view);
See my solution bellow or follow this link:
My Solution using spark: (12/30/2009) ASP.NET MVC Email Template Solution
If you want simple text replacements, .NET has something for that:
And the Welcome.txt file
Again, this is only good for simple string replacements. If you plan emailing more data, you would need to format it properly then replace it.