Emailing should be part of the business layer.
I encountered the same problem a few weeks ago :, I am creating a web application using asp.net mvc 3, which consists of three projects: Repository (DAL), Services (BLL), Presentation (Web)
My application logic is implemented at the service level, so I was looking for the best way to implement a completely independent module at the service level to send HTML messages to users so that this service level functions can use it directly, without bringing it to the presentation level.
After some searching, I found an elegant solution made by Kazi Manzur, where he created an email subsystem that uses Razor Views to send HTML / Text emails outside of the web proejct.
Use Razor template for email outside ASP.NET MVC
Since then I have been using its subsystem, and it does an excellent job.
source share