我正在将邮件列表集成到asp.net MVC中的现有CMS中。
我需要向订阅者发送确认电子邮件。我应该从哪里发送它,控制器,还是服务层?
澄清:我肯定会创建一个名为SendConfirmationEmail()的单独服务方法。问题是谁将其称为处理注册表单的控制器或将待处理请求添加到DB的服务?
显然我可以从两者发送它但是哪个是适当的MVC?
答案 0 :(得分:3)
我想标准方法是将一个电子邮件服务注入您的控制器,控制器只调用_emailService.Enqueue(myMessage)之类的服务操作。
public class MyController
{
IEmailService _emailService;
public MyController(IEmailService emailService)
{
_emailService = emailService;
}
public ActionResult Email()
{
var myMessage = new MyMessage();
// Initialize message here
_emailService.Enqueue(myMessage);
return View();
}
}
一些好处是:
答案 1 :(得分:0)
MVC鼓励分离关注点,以便在层中放置行为,以解决行为的问题。由于我不熟悉您的架构,我不知道您的“服务层”是什么意思,但由于发送电子邮件与您网站的模型,视图或控制器几乎没有关系,我建议您将此功能转移到应用程序中它所属的层。
如果您的服务层实际上是应用程序层,那么我会将代码放在那里。