Отсылка 20,000 + электронные письма с asp.net

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

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

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

Веб-сервис был бы лучшей альтернативой?

Советуйте, TIA

7
задан Kyle 12 April 2010 в 17:05
поделиться

5 ответов

Я предлагаю выпустить это в пакетном режиме. Не пытайтесь запустить код ASP.NET для создания 20K писем и их рассылки, так как у вас могут возникнуть проблемы с тайм-аутом и производительностью. Вместо этого заполните таблицу получателем, темой, телом и начните пакетный процесс из службы Windows. Таким образом, ваш код выполняется таким образом, чтобы можно было управлять задержкой, вместо того, чтобы веб-страница ожидала возврата запроса.

11
ответ дан 6 December 2019 в 09:59
поделиться

А как насчет использования инструмента Database Mail , предоставляемого самим SQL Server . Вы по-прежнему можете использовать asp.net, но электронная почта будет отправлена ​​SQL Server, и все, что вам нужно сделать, вызвать хранимую процедуру и оставить все на SQL Server.

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

Инструмент Database Mail также предоставляет параметры очереди и приоритета. Если возникнет проблема, электронное письмо снова будет поставлено в очередь и отправлено позже, но остальные будут отправляться по-прежнему.

Он называется Database Mail в SQL Server 2008 и SQL Mail в предыдущих версиях.

Для получения дополнительной информации проверьте ссылки ниже:

2
ответ дан 6 December 2019 в 09:59
поделиться

Ок, во-первых - это вряд ли масштабно, я обрабатывал 50.000 писем+

Пусть письма записываются в FOLDER - каталог. Затем используйте локальную службу SMTP, которую вы можете установить, указывая ее на папку как каталог pickup. Это по крайней мере обеспечит вам приличный буфер между ними (т.е. вы можете закончить работу над asp.net, а письма в этот момент не будут отправлены).

6
ответ дан 6 December 2019 в 09:59
поделиться

Вам не нужна веб-служба, а скорее способ группировки писем в очередь (возможно, таблица «Email_Queue» в БД). Тогда служба Windows, запущенная на сервере, могла бы читать через очередь по принципу «первым пришел / первым обслужен» в разумных порциях, одновременно отправляемых в SMTPClient, удаляя элементы из очереди по мере их обработки. Возможно, вам потребуется выполнить некоторые измерения, чтобы определить размер блока и задержку для вашего почтового сервера.

0
ответ дан 6 December 2019 в 09:59
поделиться

Вы можете использовать javascript для таймера, чтобы запросить сценарий, который отправляет почту небольшими порциями, которые не истекают по времени. Затем вы вызываете сценарий из браузера. Добавьте индикатор выполнения, аутентификацию и т. Д.

0
ответ дан 6 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: