2016-02-08 2 views
0

Я планирую разработку почтового сервера для отправки электронной почты по нескольким веб-сайтам. Ниже приведено описание того, что мы планируем реализовать, и я хотел бы получить ваше мнение/предложения.Пользовательский почтовый сервер .NET MVC

Мы используем ASP.NET MVC и имеем множество веб-сайтов, размещенных на Azure. В настоящее время мы отправляем почту внутри каждого из веб-приложений, используя SMTPServer.Send(). Очевидно, что это не идеальный способ отправки электронных писем, когда у вас есть прилично занятый набор веб-сайтов, потому что отправка почтового вызова блокируется и не может гарантировать отправку писем. С этим я волнуюсь, получая приток почтовых запросов, когда мы запускаем наш следующий веб-сайт (мы думаем, что он получит приличный объем трафика, и будет отправлено множество писем).

My plan of action: для создания централизованного почтового сервера, который работает в фоновом режиме (мы используем лазурь, и это будет просто другое веб-приложение). Когда каждое из наших веб-приложений хочет отправить почту, вместо того, чтобы делать это внутренне, он будет вызывать веб-метод на почтовом сервере с именем sendMail(), эта функция будет принимать определенные параметры и вставлять параметры почты, контент и т. Д. в базу данных. Затем почтовый сервер будет опроса базы данных с фиксированными интервалами времени, выберите набор неотправленных писем и попытайтесь отправить их с помощью той же функции SMTPServer.Send(). Если по какой-то причине по электронной почте не удается, мы не будем отмечать ее как отправленную, а в следующем интервале опроса снова будет выбрано электронное письмо, и будет предпринята другая попытка отправки. (мы ограничим количество попыток отправки 20).

Это позволит каждому из веб-сайтов работать бесперебойно, без внутренних блокировок, отправляя почтовые вызовы внутри страны, и почтовый сервер будет обрабатывать все отправления последовательно и в контролируемой среде как отдельное автономное веб-приложение. Спасибо заранее!

ответ

1

Похож на хороший дизайн, Не знаю весь сценарий, который позволяет создать что-то вроде сервера электронной почты. Проблема была решена также с помощью службы, которые уже существуют, как Бюро 365.

Ваш дизайн хорош, мои предложения будут следующие,

Вы можете использовать Azure WebJobs для создания агента опроса. Вы можете заставить веб-работу работать как запланированное веб-задание, которое выполняет опрос и отправку почты, и его можно написать очень просто, как простое консольное приложение.

Вы можете использовать Azure API приложения для создания SendMail() вызов, и вы можете использовать Azure AD Auth на API для аутентификации абонента в API с помощью аутентификации и функцию авторизации легко защитить почтовый сервер. Вы также можете включить CORS легко, а также убедиться, что вы получаете запросы с других сайтов и обрабатываете его.

Некоторые вопросы, я предвижу для вас,

  1. Объем и Скейлинговые: Вы можете обрабатывать только столько электронной почты между каждым опросом. Если вы не можете, тогда вам нужно будет создать еще один агент опроса, который усложнит ситуацию, поскольку им нужно знать, что они собирают разные наборы электронных писем для отправки. Если объем будет низким, вы должны быть в порядке.
  2. Задача: Почему веб-сайты не могут отправлять почту самостоятельно? А затем запишите его в базу данных для отслеживания. Все, что вам нужно создать модуль сборки или компонент, который они используют на своей веб-странице для создания и отправки почты. Polymer 1.0 хорошо работает для этого сценария.

Надеюсь, это поможет вам начать работу.

Смежные вопросы