Mailkit SMTPClient 连接可以保持打开多长时间

How long can a Mailkit SMTPClient connection stay open

我将 mailkit 用于我的 ASP.Net 核心应用程序并创建一个 SMTPClient 对象,然后我将其连接到 Office365 并使用用户名和密码对我的用户进行身份验证。此连接可以打开多长时间,直到它过期或需要重新验证?另外,有没有办法在到期时不发送电子邮件来保持连接?

要保持​​客户端与服务器的连接(无论是使用 ImapClient、Pop3Client 还是 SmtpClient),您可以使用 NoOp() 或 NoOpAsync() 方法向服务器发送命令“没什么”,只是让服务器知道客户端仍然存在并希望连接保持活动状态。至少在理论上这会起作用。

也就是说,长时间保持 SMTP 连接可能不是好的网络礼仪。

大多数 SMTP 服务器将期望客户端连接、刷新其出站消息队列(通过发送每条排队的消息)然后立即断开连接,一些较大的免费邮件服务器可能会忽略 NOOP 命令并断开连接客户无论如何在一段时间后。

例如,IMAP 规范规定服务器应在客户端最后一个命令后保持连接至少 30 分钟,但实际上,GMail 只会保持连接不超过 10 分钟。

据我记忆犹新,SMTP 规范没有就客户端最后一个命令后保持连接活动的时间提出这样的建议,因此某些服务器可能需要更频繁的 NOOP命令比其他命令和 some 甚至可能有一个最长的时间段,无论您是否发送这些 NOOP 命令,它们都允许您保持该连接处于活动状态。

TL;DR:

如果发送足够频繁,NOOP 命令(通过 NoOp() 或 NoOpAsync() 方法)理论上将保持连接有效,但我不会依赖它可靠地工作。