Сохранение MailKit клиента в нескольких функциях

Я заранее прошу прощения, если это "очевидный" вопрос.

Я особенно новичок в MailKit и новичок в C# в целом.

Чтобы открыть новое соединение IMAP, я использую следующий код, взятый прямо из вступительных заметок GitHub MailKit:

using (var client = new ImapClient())
            {
                client.Connect("imap.gmail.com", 993, true);

                // Note: since we don't have an OAuth2 token, disable
                // the XOAUTH2 authentication mechanism.
                client.AuthenticationMechanisms.Remove("XOAUTH");

                client.Authenticate("emailAddress", "pass");

                // The Inbox folder is always available on all IMAP servers...
                var inbox = client.Inbox;
                inbox.Open(FolderAccess.ReadOnly);
             }

У меня есть класс, который содержит функции, связанные с управлением электронной почтой.

Я бы хотел, чтобы экземпляры "клиента" ImapClient и "входящие" ImapClient.Inbox сохранялись во всем моем классе, чтобы каждая функция могла получить доступ к папке "Входящие" без необходимости выполнения процедуры подключения, описанной выше. Как я могу сделать так, чтобы эти случаи сохранялись на протяжении всего моего класса?

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

Заранее спасибо.

1 ответ

Решение

Все, что вам нужно сделать, это не создавать клиента в операторе using, тогда вы сможете хранить ссылку на клиента (которую вы можете использовать, чтобы легко получить папку "Входящие").

Когда вы закончите с клиентом, вы можете позвонить Dispose(),

Другие вопросы по тегам