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

Iri*_*eck 2 smtpclient office365 asp.net-core-mvc mailkit

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

jst*_*ast 5

要保持与服务器的客户端连接处于活动状态(无论是使用 ImapClient、Pop3Client 还是 SmtpClient),您可以使用 NoOp() 或 NoOpAsync() 方法向服务器发送命令,该命令“不执行任何操作”,但执行以下操作:让服务器知道客户端仍然存在并且希望连接保持活动状态。至少在理论上这是可行的。

也就是说,长时间保持 SMTP 连接活动可能不被认为是良好的网络礼仪。

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

例如,IMAP 规范规定服务器应在客户端发出最后一个命令后至少 30 分钟内保持连接活动状态,但实际上,GMail 只会使该连接保持活动状态不到 10 分钟。

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

长话短说:

如果发送得足够频繁,NOOP 命令(通过 NoOp() 或 NoOpAsync() 方法)理论上将保持连接处于活动状态,但我不会依赖于此可靠地工作。