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 и другие домены, не попадая в черный список.
Вот несколько ссылок на поставщиков услуг электронной почты.