Отправьте Новостную рассылку в asp.net приблизительно на 10 000 электронных писем

я должен записать приложение для отправки новостной рассылки. что лучший способ состоит в том, чтобы отправить новостной рассылке thoundands пользователей? Мое требование

  1. Каждая почта является seprately Относительно:
  2. Каждая почта имеет уникальный, Отказываются от подписки ссылка

Хорошо для использования почтового класса SMTP .NET? Я смотрю, aound может вопросы в так, но не может решить, какой approcah я должен пойти? Существует много предложений

  1. Многопоточная служба Windows
  2. Используйте почтовый сервер
  3. Добавьте, что thread.sleep (2000) между каждым отправляют.

кто-либо может предложить хороший путь к imepement это?

7
задан Pragnesh Patel 28 June 2010 в 15:51
поделиться

5 ответов

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

Самым простым вариантом было бы просто создать быстрое и грязное консольное приложение или приложение в форме Windows.

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

Классы в пространстве имен System.Net.Mail отлично подходят для отправки вашей почты.

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

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

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

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

РЕДАКТИРОВАТЬ: Вот настройки, которые нужно добавить в файл конфигурации для установки каталога раскладки

<system.net>
    <mailSettings>
        <smtp from="support@test.com" deliveryMethod="SpecifiedPickupDirectory" >
            <specifiedPickupDirectory pickupDirectoryLocation="Z:\Path\To\Pickup"/>
        </smtp>
    </mailSettings>
</system.net>
8
ответ дан 6 December 2019 в 19:32
поделиться

Определенно не делайте этого в ASP.NET. Это одна из самых больших ошибок, которые делают новые веб-разработчики.

Это должно быть приложение или служба Windows, способная справиться с таким большим объемом.

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

Я написал страницы, которые отправляют электронные письма, но не в том объеме, который вам нужен. Тем не менее, я бы порекомендовал следующее на основе кода, который я реализовал в прошлом:

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

  • Имейте процесс, который находится за пределами ASP.NET, на самом деле отправлять электронные письма. Это может быть файл vbs, настроенный как запланированная задача, или (предпочтительно) служба Windows. Процесс берет текст электронного письма, добавляет ссылку для отказа от подписки и после успешной отправки помечает запись базы данных как отправленную. Таким образом, если отправка не удалась, она может повторить попытку позже (процесс отправки перебирает все записи, помеченные как неотправленные).

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

ИМХО, отправка электронных писем в рамках рабочего процесса ASP.NET - плохая идея, потому что вы не знаете, сколько времени это займет, и если отправка не удалась, мало возможностей повторить попытку до истечения времени ожидания страницы.

1
ответ дан 6 December 2019 в 19:32
поделиться

Создайте веб-страницу, чтобы «оформить» информационный бюллетень. Когда они нажмут «Отправить», поставьте информационный бюллетень в очередь где-нибудь (база данных) и используйте другую программу (службу Windows и т. Д.) Для отправки письма из очереди. При правильной разработке это будет во много раз более эффективным и потенциально отказоустойчивым.

1
ответ дан 6 December 2019 в 19:32
поделиться

Я написал модуль информационного бюллетеня (как часть более крупной системы) в ASPNET MVC 2, Entity Framework и с использованием пространства имен System.Net.Mail. Он запускается в представлении и на самом деле просто запускается в контроллере с вспомогательным методом для отправки. Когда отправляется каждое электронное письмо, я отслеживаю, есть ли жесткий отказ (выдается исключение), и я обновляю эту запись базы данных, сообщая об ошибке с исключением, в противном случае я обновляю запись об успехе. Мы также занимаемся персонализацией, поэтому у нас есть «теги», которые заменяются дополнительным полем в базе данных (хранятся в формате XML для гибкости). Это помогает обрабатывать функцию отмены подписки.

Мой код довольно прост (пожалуйста, не ругайте меня за использование обработки исключений в качестве бизнес-логики ;) и он работает как шарм.

Все это делается на VPS по адресу http://maximumasp.com, на котором также размещаются 4 сайта с довольно приличным трафиком. Мы используем их SMTP-серверы. Мы уведомили их, что нам нужна эта услуга, и у нас не было проблем в отношениях.

У нас было 2 ГБ ОЗУ на машине под управлением Windows 2008, и она обрабатывала 6 электронных писем в секунду. Мы увеличили его до 3 ГБ, так как это было нужно веб-сайтам, и теперь почтовая рассылка делает около 20 писем в секунду.Наши рассылки варьируются от 2 000 до 100 000 адресов электронной почты.

Короче говоря, ASP.NET можно использовать для обработки почтовой рассылки, и если вы добавите некоторую логику для обработки обновления записи, то беспокойство о том, что вы потеряете свой путь в середине отправки, снизится. Да, вероятно, есть более хитрые способы сделать это. Мы изучаем MQMS и многопоточность, а также отделяем их от службы Windows, чтобы сделать ее более стабильной и масштабируемой, поскольку мы добавляем больше клиентов и большие списки, но на данный момент она работает просто отлично с разумной отчетностью и обработкой ошибок.

1
ответ дан 6 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

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