C# 发送电子邮件通知的设计问题
我有一个非常基本的问题,但是解决方案可能有点复杂C# 发送电子邮件通知的设计问题,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,我有一个非常基本的问题,但是解决方案可能有点复杂 网站开发者如何发送电子邮件,如忘记密码链接、注册信息和/或任何其他需要发送的通知 开发人员是否将消息存储在SQL server(一个单独的类)XML中 我使用的是洋葱模型,我的SMTP接口位于app.core中,但是我发送邮件的基类位于infrastructure.backends中。我不希望我的应用程序服务依赖于后端,不确定这是对是错还是我是强迫症 我在c#you System.Net.Mail中使用Ninject作为我的IOC/DI。我会为你
根据体系结构,我在将其作为应用程序服务的一部分方面没有遇到任何问题。如果您发送html电子邮件,我会使用精简的主/布局页面和视图。然后我让控制器将该视图呈现为一个字符串,以便在电子邮件中使用。它就像其他mvc视图和模型一样 如果您发送html电子邮件,我会使用精简的主/布局页面和视图。然后我让控制器将该视图呈现为一个字符串,以便在电子邮件中使用。它就像其他mvc视图和模型一样 根据我发现的一篇帖子稍作修改,这似乎是正确的滚动方式。至少这是一个开始。
公共接口IViewMailer { 字符串RenderPartialViewToString(字符串视图名称、对象模型、ControllerContext ControllerContext); }
从我发现的一篇帖子中稍微修改一下,这似乎是正确的滚动方式。至少这是一个开始。
公共接口IViewMailer { 字符串RenderPartialViewToString(字符串视图名称、对象模型、ControllerContext ControllerContext); }
让我澄清一下,我非常熟悉System.Net.Mail名称空间。我想我的问题更像是一个架构问题。发送电子邮件很简单;)让我澄清一下,我非常熟悉System.Net.Mail名称空间。我想我的问题更像是一个架构问题。发送电子邮件很简单;)这看起来很有趣,它使用视图作为模板。。现在检查这个。邮政+1-我现在用它,它摇滚。在视图中编写电子邮件比在字符串中构建HTML要好得多。这看起来很有趣,它使用视图作为模板。。现在检查这个。邮政+1-我现在用它,它摇滚。在视图中编写电子邮件比在字符串中构建HTML要好得多。再也没有了。公平地说,OP没有添加关于
System.Net.Mail
的评论,直到添加了这个答案。噢,它让我来修复你。。。请告诉先生任何负面消息。公平地说,OP没有添加关于System.Net.Mail
的评论,直到添加了此答案。噢,让我来修复你。。。告诉先生任何负面的事情。哈哈。我刚想说,想了想,把这个该死的视图渲染成一个字符串,然后发射。。。太酷了,哈哈。我刚想说,想了想,把这个该死的视图渲染成一个字符串,然后发射。。。太酷了。
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
}