Лучший подход для отправки массовой электронной почты через веб-страницу ASP.NET - PullRequest
0 голосов
/ 23 февраля 2011

Я написал систему управления контактами / связи, которая записывает сведения о людях и позволяет отправлять массовые сообщения.

Однако иногда при отправке электронных писем возникает следующее исключение:

System.Threading.ThreadAbortException: Thread was being aborted

Как лучше всего отправлять электронные письма через ASP.NET?

Что я ищуЭто подход, который сохранит все это в ASP.NET

У меня есть ощущение, что мне может понадобиться хранить электронные письма в базе данных и иметь отдельное консольное приложение .net / Службу Windows для их отправки.Однако из-за дополнительных затрат на разработку и нехватки времени у меня есть последний вариант, который я хочу рассмотреть.

Ответы [ 3 ]

4 голосов
/ 23 февраля 2011

Не существует надежного способа массового вещания электронной почты из .net без какого-либо посредника.

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

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

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

Отправка почты из .net, как правило, подходит для тех, кто не работает, особенно когда все получатели находятся в вашей компании. Тем не менее, в любое время, когда вам нужно с какой-то надежностью отправить их широкой публике, вам нужно, так сказать, «повзрослеть».

2 голосов
/ 23 февраля 2011

Не. Запросы ASP.net могут быть прекращены IIS, если они превышают время ожидания, IIS отключает их и т. Д.

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

2 голосов
/ 23 февраля 2011

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

...