我有一个非常基本的问题,但解决方案可能有些复杂。
我正在使用Onion模型,我的SMTP接口在app.core中,但我发送邮件的基类位于infrastructure.backends中。我不希望我的应用程序服务依赖于后端,不确定这是错误的还是我是强迫症。
我使用Ninject作为我的IOC / DI。
答案 0 :(得分:6)
使用Postal。我认为这是开发电子邮件模板的最有效方式。可以建立架构,牢记它。它允许我们在不重新编译代码的情况下更改模板。
根据架构,我将其作为应用程序服务的一部分并没有任何问题。
答案 1 :(得分:2)
如果您要发送HTML电子邮件,我会使用精简的主/布局页面和视图。然后我让控制器将该视图呈现为一个字符串,以便在电子邮件中使用。它就像任何其他mvc视图和模型一样。
答案 2 :(得分:0)
在c#中你是System.Net.Mail。我会为你做大部分事情。
答案 3 :(得分:0)
从我发现的帖子略微修改,这似乎是正确的滚动方式。至少这是一个开始 公共接口IViewMailer { string RenderPartialViewToString(string viewName,object model,ControllerContext controllerContext); }
public class ViewMailer : IViewMailer
{
#region IViewMailer Members
public string RenderPartialViewToString(string viewName, object model, ControllerContext controllerContext)
{
if (string.IsNullOrEmpty(viewName))
viewName = controllerContext.RouteData.GetRequiredString("action");
controllerContext.Controller.ViewData.Model = model;
using (var stringWriter = new StringWriter())
{
ViewEngineResult viewEngineResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var viewContext = new ViewContext(controllerContext, viewEngineResult.View,
controllerContext.Controller.ViewData,
controllerContext.Controller.TempData, stringWriter);
viewEngineResult.View.Render(viewContext, stringWriter);
return stringWriter.GetStringBuilder().ToString();
}
}
#endregion
}