.NET Service Application - отправка почты 2 634 789 пользователям - PullRequest
0 голосов
/ 22 октября 2009

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

У нас есть 2 634 789 пользователей, и почта должна быть отправлена ​​всем им. В программе я извлекаю информацию, относящуюся к 100 пользователям одновременно (чтобы избежать вызовов базы данных), сохраняю ее в программе (в DataTable) и затем отправляю почту асинхронно. Точно так же я делаю это для остальных пользователей.

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

Большое спасибо, С уважением. Bhavna.


Спасибо всем за ваше время и ответ.

Мы используем SMTP провайдера для отправки наших писем.

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

Спасибо и С уважением, Bhavna.

Ответы [ 6 ]

5 голосов
/ 22 октября 2009

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

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

1 голос
/ 22 октября 2009

Я думаю, вы должны сначала поискать в Google, как не быть помеченными как спамер. 2 миллиона писем - это не тривиально.

Планируете ли вы отправлять много писем каждый день, по одному в месяц? В этом сценарии была бы интересна таблица «электронная почта» с содержанием каждого отправленного электронного письма.

1 голос
/ 22 октября 2009

Вы должны многопоточность этого метода. Если вы можете отправлять 10 электронных писем в секунду (в зависимости от вашего сервера и SMTP-сервера), передача займет 73 часа.

1 голос
/ 22 октября 2009

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

0 голосов
/ 22 октября 2009

Я бы посоветовал сделать еще один шаг и распространить его в широком смысле. Ваш текущий подход в порядке, но у меня есть хранимая процедура, которая возвращает 100 человек по электронной почте, основываясь на некоторых дополнительных целочисленных столбцах, скажем, GENERATION и SENT_GENERATION. Ваша процедура получит N строк, которые GENERATION != NEW_GENERATION, и установит их GENERATION в NEW_GENERATION. Sproc возвращает эти N строк вызывающей программе, которая отправляет электронные письма, а затем обновляет таблицу и устанавливает для SENT_GENERATION значение GENERATION, чтобы вы могли определить, какие электронные письма были отправлены, а какие нет.

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

0 голосов
/ 22 октября 2009

Вы можете рассмотреть плоский файл и просто запустить скрипт bash, используя почтовый инструмент командной строки (сосна?), Чтобы отправить электронное письмо каждому человеку.

Если он уже находится в базе данных, значит, вы делаете это нормально. Хотя у вас есть свой SMTP-сервер? Или вы используете интернет-провайдера? Если это так, вы можете проверить их и сообщить им о своем намерении отправить письмо, чтобы они знали, что это не просто спам.

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