Asp.net mvc 发送电子邮件去哪里?服务层还是web层?

Asp.net mvc 发送电子邮件去哪里?服务层还是web层?,asp.net-mvc,wcf,design-patterns,Asp.net Mvc,Wcf,Design Patterns,我已经有几个星期的设计模式问题了。我应该把发送电子邮件的逻辑放在哪里?可以通过asp.net mvc web界面或asp.net应用程序内托管的wcf端点访问行为 以下是该应用程序的功能: 电子邮件通知 模板呈现-这意味着我必须知道url结构(操作、基址等) 目前,我正在web.config文件中存储基本url和路径,并在服务层中使用此电子邮件服务 一个特殊的功能是向用户发送确认电子邮件,并向用户发送生成的确认url。(不知道如何从服务层生成此url)电子邮件永远不应从web层提供服务。您永远不

我已经有几个星期的设计模式问题了。我应该把发送电子邮件的逻辑放在哪里?可以通过asp.net mvc web界面或asp.net应用程序内托管的wcf端点访问行为

以下是该应用程序的功能:

  • 电子邮件通知
  • 模板呈现-这意味着我必须知道url结构(操作、基址等) 目前,我正在web.config文件中存储基本url和路径,并在服务层中使用此电子邮件服务


    一个特殊的功能是向用户发送确认电子邮件,并向用户发送生成的确认url。(不知道如何从服务层生成此url)

    电子邮件永远不应从web层提供服务。您永远不希望用户在发送电子邮件时等待


    最好的做法是创建一个持久的电子邮件队列(sql很好),另一个作业可以访问该队列来发送电子邮件。这使您能够重新发送失败的电子邮件,并完全在web请求线程之外运行它们。

    您还可以在web服务器计算机上运行SMTP服务器,只需让业务逻辑层将邮件发送到该SMTP服务器即可


    只要SMTP服务器启动并运行,web应用程序的性能就不会受到影响,SMTP服务器本身会对传入的请求进行排队,并在后台处理它们。

    jfar说的是真的;也就是说,正如jfar所建议的,您可以使用生成电子邮件,然后将这些电子邮件存储在数据库中

    从邮政网站:

    Postal允许您使用创建电子邮件 常规MVC视图

    这意味着您的
    视图
    文件夹下将有一个
    电子邮件
    文件夹;这些视图实际上是您的电子邮件模板,可以完全访问任何其他视图的所有Html和URL帮助程序,这可能会使您轻松生成确认URL或您可能需要的任何内容


    邮政包括和带有具体的
    电子邮件服务实施的
    IEmailService
    接口。此服务允许您直接发送电子邮件,或者更好地生成常规的
    MailMessage
    对象。然后,您可以将准备就绪的电子邮件存储在数据库的一个表中,稍后再通过后台作业发送。

    并非所有SMTP服务器都是这样运行的。但是,由于这是ASP.NET,使用本地IIS SMTP并使用拾取目录传递到它将非常好地完成这一任务。从来没有?非常广泛的声明。我将在哪里生成电子邮件?我需要创建一个绝对URL发送给用户。但它可以由wcf或asp.net mvc触发。