Отключается ли system.net.mail.smptclient от сервера? - PullRequest
1 голос
/ 13 декабря 2008

У нас есть несколько страниц в наших веб-системах, которые используют элемент управления .net system.net.mail для отправки электронных писем. Все работает отлично, за исключением того, что теперь он начинает выглядеть так, как будто класс smptclient на самом деле не отключается от сервера, так что SMTP-сервер оставляет это соединение открытым, и мы в итоге увеличили максимальное количество соединений, которым нам разрешено открывать одновременно на SMTP-сервере, несмотря на то, что отправлял только одно электронное письмо за раз.

(Кстати, это приложение .net 2.0 asp.net, написанное на VB, и мы совершенно уверены, что это не какая-то ситуация безопасности / вируса / спама.)

Google и MSDN не нашли ничего убедительного, но достаточно ереси в записях блога, чтобы подтвердить, что мы не галлюцинируем.

У кого-нибудь еще есть эта проблема? (И удастся ли это исправить?)

Конечно, если все работает нормально, а мы галлюцинируем, это было бы неплохо знать. ;)

Ответы [ 5 ]

3 голосов
/ 13 декабря 2008

Проблема, связанная с тем, что сообщения электронной почты отправляются не сразу с помощью SmtpClient, заключается в том, что при некоторых условиях он не отправляет SMTP-команду 'QUIT', когда это необходимо (т.е. он не отключается должным образом). Я использовал следующий код для успешного отключения в прошлом:

var smtp = new SmtpClient();
smtp.ServicePoint.MaxIdleTime = 1;
smtp.ServicePoint.ConnectionLimit = 1;
smtp.Send(message);

Это вынуждает объект smtpclient отключаться как можно раньше. Кроме того, убедитесь, что ваш экземпляр smtpclient выходит из области видимости довольно быстро (т.е. где-то не хранится статическая ссылка на него).

1 голос
/ 13 декабря 2008

Убедитесь, что они установлены на почтовом сервере (при условии windows) -

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters] "TcpTimedWaitDelay" = DWORD: 0000001e "MaxFreeTcbs" = DWORD: 000007d0 "MaxUserPort" = DWORD: 0000fffe

1 голос
/ 13 декабря 2008

Проверяли ли вы свойство StmpDeliveryMthod класса StmpClient?

1 голос
/ 13 декабря 2008

Удобный инструмент для этого типа ' я подключен ' вопрос: TcpView (\\ live.sysinternals.com \ Tools \ Tcpview.exe) от SysInternals (теперь Microsoft )

1 голос
/ 13 декабря 2008

Правильно ли вы избавляетесь от своего MailMessage после его отправки? Я никогда не видел признаков того, что SmtpClient не закрывал соединение, хотя

...