En una aplicación web MVC, a menudo envío correos electrónicos.¿Debería el modelo o controlador ser responsable de enviar correos electrónicos?
Normalmente lo hago en el controlador, ya que cargo todas mis vistas desde el controlador (incluidas las vistas de correo electrónico).
Ahora, sin embargo, tengo un código que envía el correo electrónico desde el modelo.
¿De qué nivel se envía generalmente el correo electrónico? ¿Importa? ¿Es necesario para ser consistente?
Bueno, depende, ¿el "usuario" envía un correo electrónico, luego ve una página de confirmación? Si es así, debe hacerse en el controlador (enviar correo electrónico, mostrar vista de confirmación). Si se trata de una cuestión de fondo/administración, el controlador debe llamar a un método en una capa de servicio, como se indica en la respuesta siguiente. – RPM1984
Argumentaría que el envío real del correo electrónico aún debería hacerse en un servicio. El controlador debe crear una instancia del servicio, pasarle los datos, obtener una respuesta y luego llamar a la vista para procesar el paso a lo largo de los datos resultantes. –