跨多个函数持久化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"实例在我的类中始终存在,这样每个函数都可以访问收件箱,而不必运行上面的连接过程。如何使这些实例在整个课堂上持续存在?
换句话说,我想运行一次连接过程(最好是在声明类的实例时),然后让所有后续方法通过这个初始连接过程访问收件箱。
提前谢谢。
您所需要做的就是不在using语句中创建客户端,然后您就可以保存对客户端的引用(您可以使用它轻松地获取收件箱)。
完成客户端后,可以调用Dispose()
。