Сохранение 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()
,