Я использую этот фрагмент кода для отправки письма:
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mailMessage);
Если я активирую этот код десять раз в секунду, то после нескольких сотен писем отправка письма займет 10 секунд ... Может ли здесь быть очередь?
Похоже, что почтовый сервер форсирует эту задержку, вероятно, чтобы избежать спама: http://en.wikipedia.org/wiki/Tarpit_(networking).
Какой почтовый сервер вы используете? Как это настроено? Используете ли вы SMTP с проверкой подлинности или без проверки подлинности для отправки писем?
Как сказал Массимо, многие умные SMTP-серверы имеют возможность ограничения. Он также может быть ограничен внешним по отношению к SMTP-серверу с помощью регулирования сети.
Если ваш код блокируется, вы должны отправить его асинхронно. Вы можете использовать метод .SendAsync () в SmtpClient, который мне не нравится, или использовать что-то вроде SmartThreadPool для создания цепочки для каждого сообщения.
Если вы отправляете их асинхронно, вы не сможете заключить сообщение в оператор using (), поэтому вам нужно будет вызвать .Dispose () в MailMessage, иначе возникнут проблемы с ресурсами.