Я использую эту часть кода для отправки почты:
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mailMessage);
Если я инициировал этот код десять раз, то после того, как некоторая сотня писем, отправляя почту занимает 10 секунд... Могла быть очередь, вовлеченная здесь?
Может возникнуть несколько проблем:
Правильно ли вы удаляете объекты MailMessage? Если вы посмотрите, объект реализует IDisposable и, следовательно, от него следует избавиться. (Думаю, из-за потенциальных привязанностей.) Я бы начал здесь.
Вы говорили с администратором сервера. Может быть какой-то механизм дросселирования, который обнаруживает, что вы отправляете так много писем в быстрой последовательности.
Если вы хотите отправлять вам электронные письма асинхронно и заботитесь о результате попытки отправки, обязательно зарегистрируйтесь для события SendCompleted. Вы также захотите сохранить либо само сообщение, либо какое-либо представление, чтобы знать, какое сообщение было завершено в событии SendCompleted. Имейте в виду, что порядок, в котором вещи начинаются, может не совпадать с порядком их завершения.
Может быть, почтовый сервер ограничивает ваши запросы? Я отправляю почту с помощью локального SMTP-сервера IIS, и «отправка» почты занимает очень мало времени для .NET, даже когда у меня тысячи сообщений отправлены в течение нескольких минут (обработчик исключений пошел не так: P), но они могут обрабатываться очень медленно с помощью IIS, и иногда может потребоваться несколько часов, чтобы очистить почтовую очередь IIS
Используйте SmtpClient.SendAsync, а не SmtpClient.Send.