我目前正在运行一个MVC网站和WebApi,我正在考虑构建电子邮件功能。
我有非常轻量级的控制器,将大部分逻辑抽象为服务层,因为它是一个相当大的应用程序,我想在MVC和WebApi之间重复使用它。
这让我不再使用MVCMailer,因为所有示例都是在Web项目中运行的。如果编写了使用WebAPI的电话应用程序,则无法使用电子邮件功能。
我想知道是否有可能从它自己的项目中运行它?这是对我正在尝试做的非常粗略的描述。
MyProject.Web MyProject.WebApi
\ /
\ /
MyProject.Services
|
|
MyProject.Email
我可以摘除MVCMailer或ActionMailer,因为技术上.Web
和.WebApi
都是MVC4项目吗?
如果没有,那么我只会使用Standalone version of Actionmailer.net或Postal中的等效内容,但功能会有所减少。
编辑:更多信息
考虑一下这似乎很棘手,因为我必须为电子邮件视图做一些花哨的复制逻辑,以便他们自动部署mvc和webapi网站。
也许将电子邮件分离到自己的网站并让服务层发出网络请求以发送电子邮件并将其正确抽象出去会更好。
MyProject.Web MyProject.WebApi
\ /
\ /
MyProject.Services --http--> MyProject.Email
我想这样我可以将电子邮件部署在一台服务器上,而不必在所有服务器上设置smtp。欢迎评论
相关问题
答案 0 :(得分:2)
正如我在问题中提到的,我创建了一个单独的电子邮件项目,该项目基本上是一个简单的webapi项目。
MyProject.Web MyProject.WebApi
\ /
\ /
MyProject.Services --http--> MyProject.Email
我现在通过REST服务向Email webapi发送电子邮件。
注意:
我认为可以使用Razor Generator在服务层内部执行此操作。您将创建一个名为email的MVC项目,但从不直接运行它,并将其作为参考包含在Web项目中。
这将为您提供intellisense的所有好处,但您可以使用剃刀生成器将电子邮件视图编译为代码。
这种方法的缺点是,如果您有多个Web服务器,则必须在所有这些服务器上安装smtp服务。