Разговорный ответ
Я полностью понимаю вашу идею. Может быть, необходимо сделать шаг назад от Microsoft-MV-фреймворка и взглянуть на более нетронутую установку MVC.
Если состояние представления может быть чем угодно, то в веб-приложении View не просто должен отправлять HTML . Фактически, если бы кто-то обрабатывал входящий заголовок HTTP Accept:
, он содержал бы типы мультимедиа, которые могли бы помочь вам определить, с каким состоянием представления отвечать.
В случае XMLHttpRequest через JavaScript заголовок Accept:
может содержать application/json
или application/xml
. Клиент будет ожидать JSON или XML. Отправка HTML была бы неправильной.
Теперь, поскольку электронная почта не отправляется непосредственно клиентскому пользовательскому агенту (после отправки формы), это скорее побочный эффект обработки формы , чем состояние представления, которое вы должны соответствовать и ответить с. В более "чистой" среде MVC электронная почта будет отправляться моделью как услуга. Контроллер не будет вовлечен в отправку электронной почты, поскольку это не то место, где должна находиться бизнес-логика для приложения.
Тем не менее, ваша точка зрения, что электронная почта (SMTP вместо HTTP) может быть как минимум вторичным представлением , имеет определенный резонанс. Однако для этого может потребоваться (в зависимости от приложения) передача значительного объема данных из модели в гипотетический «EmailView». Если это не является препятствием, то проблема заключается в необходимости обновления основного представления (веб-страницы) и отправки электронной почты с дополнительным представлением , пока модель находится в простаивает .
Таким образом, очень практично , чтобы позволить Модели отправлять электронную почту как часть бизнес-логики. Затем разрешите представлению обновить пользовательский агент. Вот почему я говорю, что отправка электронной почты - это скорее побочный эффект , чем истинное представление.
Тем не менее, точка зрения о SMTP. Просто заголовок Accept:
для базового веб-приложения практически никогда не скажет application/batch-SMTP
.
Что если вы пишете почтовые приложения на стороне сервера? Да, тогда вы, вероятно, будете видеть входящее application/batch-SMTP
все время. : -)
IANA: Типы носителей