Я планирую разработку почтового сервера для отправки электронной почты по нескольким веб-сайтам. Ниже приведено описание того, что мы планируем реализовать, и я хотел бы получить ваше мнение/предложения.Пользовательский почтовый сервер .NET MVC
Мы используем ASP.NET MVC и имеем множество веб-сайтов, размещенных на Azure. В настоящее время мы отправляем почту внутри каждого из веб-приложений, используя SMTPServer.Send(). Очевидно, что это не идеальный способ отправки электронных писем, когда у вас есть прилично занятый набор веб-сайтов, потому что отправка почтового вызова блокируется и не может гарантировать отправку писем. С этим я волнуюсь, получая приток почтовых запросов, когда мы запускаем наш следующий веб-сайт (мы думаем, что он получит приличный объем трафика, и будет отправлено множество писем).
My plan of action: для создания централизованного почтового сервера, который работает в фоновом режиме (мы используем лазурь, и это будет просто другое веб-приложение). Когда каждое из наших веб-приложений хочет отправить почту, вместо того, чтобы делать это внутренне, он будет вызывать веб-метод на почтовом сервере с именем sendMail(), эта функция будет принимать определенные параметры и вставлять параметры почты, контент и т. Д. в базу данных. Затем почтовый сервер будет опроса базы данных с фиксированными интервалами времени, выберите набор неотправленных писем и попытайтесь отправить их с помощью той же функции SMTPServer.Send(). Если по какой-то причине по электронной почте не удается, мы не будем отмечать ее как отправленную, а в следующем интервале опроса снова будет выбрано электронное письмо, и будет предпринята другая попытка отправки. (мы ограничим количество попыток отправки 20).
Это позволит каждому из веб-сайтов работать бесперебойно, без внутренних блокировок, отправляя почтовые вызовы внутри страны, и почтовый сервер будет обрабатывать все отправления последовательно и в контролируемой среде как отдельное автономное веб-приложение. Спасибо заранее!