Отправка массовых уведомлений по электронной почте без блокировки - PullRequest
2 голосов
/ 14 января 2011

Для CRM-системы, созданной по моему заказу, я хочу, чтобы пользователи (технические специалисты) уведомлялись об изменениях в отмеченных случаях по электронной почте.

Это гарантирует простую таблицу сопоставления подписок между пользователями и случаями, а также автоматические электронные письма.отправляется каждый раз, когда в дело вносится изменение из метода ведения журнала.

Как я могу отправлять 10-100 писем подписанным пользователям, не прерывая мой метод ведения журнала?Мой SMTP-сервер находится на одноранговом узле в моей локальной сети, поэтому отправка должна быть быстрой, но в идеале это должно быть обработано внешним процессом очередей.

У меня может быть задание cron отправлять любые ожидающие электронные письма каждые 10 минут, нодля этого конкретного клиента достаточно чувствительны ко времени, и было бы неплохо мгновенное уведомление (настолько быстрое, насколько это возможно по электронной почте).

Как я могу отправлять электронные письма с массовыми уведомлениями из ASP.NET MVC, не прерывая мой метод ведения журнала

Ответы [ 2 ]

3 голосов
/ 14 января 2011

В 2007 году меня попросили изучить случай, когда веб-сервер внезапно зависнет, начнет посылать 503 ошибки и вернется через несколько минут. Короче говоря, в конце концов оказалось, что он отправляет электронную почту, которая блокирует сервер (в дополнение к некоторому плохому коду).

В основном SMTP-сервер Microsoft реализован как однопоточный сервис - последний раз я проверял. Это будет означать, что все ваши ценные потоки ASP.NET, обслуживающие запросы, должны будут стоять в очереди в одном потоке монолитного приложения, чтобы отправить не столь срочное электронное письмо. Вы должны отделить свой веб-сайт от отправки электронных писем - это то, что все делают, и для этого есть все основания.

Пишите свои электронные письма в очередь и выполняйте процесс чтения и отправки электронных писем.

2 голосов
/ 14 января 2011

Отправка электронных писем из приложения ASP.NET не очень хорошая идея, поскольку она может монополизировать ценные ресурсы сервера.Лучшим решением было бы настроить службу Windows для выполнения этой задачи или даже написать консольное приложение, которое можно запланировать для запуска с помощью планировщика Windows. Quartz.NET - хорошее решение, на которое вы можете обратить внимание, позволяя планировать работу.

Если вы хотите, чтобы отправка электронной почты запускалась из определенного действия контроллера, у вас также может быть отдельная служба WCF, которая может вызываться асинхронно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...