Есть ли способ закрыть сеанс почты SMTP? - PullRequest
7 голосов
/ 09 мая 2011

Я использую Gmail STMP-сервер для отправки писем.Работает просто отлично.Но через несколько дней он иногда перестает работать.Теперь он работает только 5 out of 10 раз.

Исключение: Failure Sending Email

Внутреннее исключение: Unable to connect to remote server.

После разговора с техподдержкой хостинга они сказали тамлимит почтового сеанса на их сервере.Это Shared Hosting, поэтому при его превышении все новые соединения блокируются.Они сказали, что пытаются это исправить.Но также сказал, пожалуйста, проверьте, что вы closing the mail session properly or not.

Я смотрел в это, но нет Close() или Dispose().Я также читал, что нет подтверждения для SMTP-трансфера?

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

Обновление

Я использую System.Net.Mail

MailMessage msg = new MailMessage ();

SmtpClient sc = new SmtpClient ("smtp.gmail.com", 587);

NetworkCredential info = new NetworkCredential ("электронная почта", "пароль");

Тогда есть еще один метод, который вызывает sc.Send().

1 Ответ

12 голосов
/ 09 мая 2011

System.Net.Mail.SmtpClient реализует IDisposable, поэтому я бы посоветовал вам использовать его, а не какой-либо код, который вы используете в настоящее время. Используйте , используя блок , чтобы убедиться, что он правильно утилизируется.

Обратите внимание, что использование System.Web.Mail не рекомендуется в пользу System.Net.Mail.

using (SmtpClient client = new SmtpClient("mail.google.com")) 
{

}

EDIT Теперь вы заметили, что используете System.Net.Mail. В этом случае вы обнаружите, что SMTPClient имеет метод Dispose (так как он реализует IDisposable), который будет корректно закрывать SMTP-соединение. Однако рекомендуется использовать блок using вместо прямого вызова Dispose. Наконец, обратите внимание на следующее из связанной документации:

У класса SmtpClient нет финализатора метод. Таким образом, приложение должно позвонить Распоряжаться явно освободить ресурсы.

Метод Dispose выполняет итерацию по все установленные соединения с SMTP-сервер, указанный в Host свойство и отправляет сообщение о выходе с последующим изящным окончанием ПТС подключение. Метод Dispose также освобождает неуправляемые ресурсы, используемые у основного гнезда.

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