MailKit: Как лучше всего использовать Client.Disconnect (...) - PullRequest
0 голосов
/ 08 января 2019

Я недавно использовал Mailkit lib в нашем проекте для замены .NET SmtpClient. У нас есть 2 бизнес-кейса, чтобы использовать SmtpClient для отправки электронных писем. В одном случае мы используем SmtpClient для отправки электронных писем в очереди в отдельном процессе, а в другом случае мы отправляем электронные письма мгновенно. При реализации я заметил, что мы должны вызвать метод Disconnect экземпляра Client. <code>mailClient.Disconnect(...); В документации не было уверенности и неясно, как лучше всего вызвать этот метод. Итак, мой вопрос: как лучше всего использовать этот метод? Вызывать mailClient.Disconnect (true) для каждого сообщения или mailClient.Disconnect (false)?

Из интереса, если я использую клиента в блоке using, я должен требовать явного вызова Disconnect (...) после отправки сообщения? Я считаю, что он вызывает неявное отключение при выполнении Dispose (). <code>using (var mailClient = new SmtpClient()) { mailClient.Connect(...); mailClient.AuthenticationMechanisms.Remove("XOAUTH2"); mailClient.Authenticate(...); mailClient.Send(message); mailClient.Disconnect(false); }

Ценю ваши отзывы в этом отношении.

1 Ответ

0 голосов
/ 08 января 2019

Метод Dispose() закроет соединение с сокетом только в том случае, если оно еще живо (что фактически совпадает с вызовом Disconnect (false)).

Вызов Disconnect (true) гораздо более вежлив, поскольку он отправляет на сервер соответствующую команду LOGOUT или QUIT, которая позволяет серверу правильно распоряжаться своими ресурсами.

...