ASP.NET приложение для отправки массовых писем

У нас есть приложение, которое позволяет пользователям отправлять электронные письма своим клиентам, хранящимся в базе данных. Это приложение ASP.NET, и оно использует AspMail для отправки этих писем.

Приложение отправляет электронные письма по одному на случай, если пользователи выберут слишком много клиентов. Мы видим, что некоторые пользователи имеют более 10.000 клиентов, и когда они отправляют им электронные письма, у нас возникают проблемы, например, с Hotmail. Они блокируют наш IP из-за слишком большого количества писем. ТАКЖЕ эти письма иногда блокируют наш почтовый сервер.

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

Что мы можем сделать? Лучше отправить по одному? Есть ли другой подход?

2 ответа

Одним из решений является отправка вашей электронной почты в пакетном режиме. Вы можете использовать консольное приложение для достижения этой цели; Я уже успешно использовал это для 2000 писем, используя период отдыха между каждыми 100 отправленными письмами:

http://www.codersbarn.com/post/2011/11/08/Calling-Console-Application-from-Web-Form.aspx

while (dr.Read())
{
    ....
    toAddress = dr[1].ToString();

    // Send email in batches of 100 with a 30 second pause between each batch 
    if ((count >= 100) && (count % 100 == 0))
        Thread.Sleep(30000);
    ....
}

Множество проблем, которые могут возникнуть из-за массовой рассылки, - вот почему появились службы электронной почты. Существует множество поставщиков почтовых услуг, которые имеют хорошо документированные API-интерфейсы, которые можно использовать непосредственно из.net. Mailgun - один из примеров, который я использовал. Они создали свою службу доставки, чтобы надежно отправлять электронную почту на hotmail и другие домены, не попадая в черный список.

Вот несколько ссылок на поставщиков услуг электронной почты.

Другие вопросы по тегам