跨多个函数持久化MailKit客户端

本文关键字:MailKit 客户端 持久化 函数 | 更新日期: 2023-09-27 18:21:45

如果这是一个"显而易见"的问题,我提前道歉。

我对MailKit和C#特别陌生。

要打开一个新的IMAP连接,我使用以下代码,直接取自MailKit的GitHub简介:

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"client"和ImapClient.Iinbox"Inbox"实例在我的类中始终存在,这样每个函数都可以访问收件箱,而不必运行上面的连接过程。如何使这些实例在整个课堂上持续存在?

换句话说,我想运行一次连接过程(最好是在声明类的实例时),然后让所有后续方法通过这个初始连接过程访问收件箱。

提前谢谢。

跨多个函数持久化MailKit客户端

您所需要做的就是不在using语句中创建客户端,然后您就可以保存对客户端的引用(您可以使用它轻松地获取收件箱)。

完成客户端后,可以调用Dispose()