如果应用程序希望将多个消息发送到同一 SMTP 服务器,则可以使用类的当前实例 SmtpClient 建立的连接。 当使用身份验证或加密建立与 SMTP 服务器的连接时,这特别有用。 身份验证和建立 TLS 会话的过程可能很昂贵。 向同一 SMTP 服务器发送大量电子邮件时,需要为每个邮件重新建立连接,这可能会对性能产生重大影响。 有许多大量电子邮件应用程序发送电子邮件状态更新、新闻稿分发或电子邮件警报。 此外,许多电子邮件客户端应用程序支持下线模式,用户可以在建立与 SMTP 服务器的连接时撰写许多稍后发送的电子邮件。 通常,电子邮件客户端会将所有 SMTP 邮件发送到 Internet 服务提供商提供的特定 SMTP 服务器 (,) 然后将此电子邮件转发给其他 SMTP 服务器。

SmtpClient 实现将 SMTP 连接池,以便避免重新建立与同一服务器的每个消息的连接开销。 应用程序可以使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器和许多不同的 SMTP 服务器。 因此,无法确定应用程序何时使用完 SmtpClient 该对象,并且应对其进行清理。

当 SMTP 会话完成并且客户端希望终止连接时,它必须将 QUIT 消息发送到服务器,以指示它没有要发送的更多消息。 这样,服务器就可以释放与客户端连接关联的资源,并处理客户端发送的消息。

这些 Dispose 方法循环访问所有已建立的连接,并将 QUIT 消息发送到每个 SMTP 服务器,然后正常结束 TCP 连接。 这些方法还会释放托管资源所使用的 Socket 非托管资源,并选择性地释放托管资源。

public void Dispose ();
abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit
Public Sub Dispose ()
Dispose()

如果应用程序希望将多个消息发送到同一 SMTP 服务器,则可以使用类的当前实例 SmtpClient 建立的连接。 当使用身份验证或加密建立与 SMTP 服务器的连接时,这特别有用。 身份验证和建立 TLS 会话的过程可能很昂贵。 向同一 SMTP 服务器发送大量电子邮件时,需要为每个邮件重新建立连接,这可能会对性能产生重大影响。 有许多大量电子邮件应用程序发送电子邮件状态更新、新闻稿分发或电子邮件警报。 此外,许多电子邮件客户端应用程序支持下线模式,用户可以在建立与 SMTP 服务器的连接时撰写许多稍后发送的电子邮件。 通常,电子邮件客户端会将所有 SMTP 邮件发送到 Internet 服务提供商提供的特定 SMTP 服务器 (,) 然后将此电子邮件转发给其他 SMTP 服务器。

SmtpClient 实现将 SMTP 连接池,以便避免重新建立与同一服务器的每个消息的连接开销。 应用程序可以使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器和许多不同的 SMTP 服务器。 因此,无法确定应用程序何时使用完 SmtpClient 该对象,并且应对其进行清理。

当 SMTP 会话完成并且客户端希望终止连接时,它必须将 QUIT 消息发送到服务器,以指示它没有要发送的更多消息。 这样,服务器就可以释放与客户端连接关联的资源,并处理客户端发送的消息。

Dispose 对正在执行异步 SendAsync 操作的对象调用该方法 SmtpClient 将取消发送操作,就像调用该方法一样 SendAsyncCancel

SmtpClient 没有 Finalize 方法。 因此,应用程序必须调用 Dispose 才能显式释放资源。

该方法 Dispose 循环访问与属性中指定的 Host SMTP 服务器的所有已建立连接,并发送 QUIT 消息,然后正常结束 TCP 连接。 该方法 Dispose 还会释放基础 Socket 使用的非托管资源。

在完成使用 Dispose 后,应调用 SmtpClient Dispose 方法使 SmtpClient 处于不可用状态。 调用 Dispose 后,必须释放对它 SmtpClient 的所有引用,以便垃圾回收器可以回收占用的 SmtpClient 内存。

有关详细信息,请参阅 清理非托管资源 实现 Dispose 方法

每次释放对 Dispose 的最后一个引用前,均应调用 SmtpClient 。 否则,不会释放正在使用的资源,以便垃圾回收器可以回收内存。

protected:
 virtual void Dispose(bool disposing);
protected virtual void Dispose (bool disposing);
abstract member Dispose : bool -> unit
override this.Dispose : bool -> unit
Protected Overridable Sub Dispose (disposing As Boolean)

如果应用程序希望将多个消息发送到同一 SMTP 服务器,则可以使用类的当前实例 SmtpClient 建立的连接。 当使用身份验证或加密建立与 SMTP 服务器的连接时,这特别有用。 身份验证和建立 TLS 会话的过程可能很昂贵。 向同一 SMTP 服务器发送大量电子邮件时,需要为每个邮件重新建立连接,这可能会对性能产生重大影响。 有许多大量电子邮件应用程序发送电子邮件状态更新、新闻稿分发或电子邮件警报。 此外,许多电子邮件客户端应用程序支持下线模式,用户可以在建立与 SMTP 服务器的连接时撰写许多稍后发送的电子邮件。 通常,电子邮件客户端会将所有 SMTP 邮件发送到 Internet 服务提供商提供的特定 SMTP 服务器 (,) 然后将此电子邮件转发给其他 SMTP 服务器。

SmtpClient 实现将 SMTP 连接池,以便避免重新建立与同一服务器的每个消息的连接开销。 应用程序可以使用同一 SmtpClient 对象将许多不同的电子邮件发送到同一 SMTP 服务器和许多不同的 SMTP 服务器。 因此,无法确定应用程序何时使用完 SmtpClient 该对象,并且应对其进行清理。

当 SMTP 会话完成并且客户端希望终止连接时,它必须将 QUIT 消息发送到服务器,以指示它没有要发送的更多消息。 这样,服务器就可以释放与客户端连接关联的资源,并处理客户端发送的消息。

Dispose 对正在执行异步 SendAsync 操作的对象调用该方法 SmtpClient 将取消发送操作,就像调用该方法一样 SendAsyncCancel

SmtpClient 没有 Finalize 方法。 因此,应用程序必须调用 Dispose 才能显式释放资源。

该方法 Dispose 循环访问与属性中指定的 Host SMTP 服务器的所有已建立连接,并发送 QUIT 消息,然后正常结束 TCP 连接。 该方法 Dispose 还会释放托管资源所使用的 Socket 非托管资源,并选择性地释放托管资源。

在完成使用 Dispose 后,应调用 SmtpClient Dispose 方法使 SmtpClient 处于不可用状态。 调用 Dispose 后,必须释放对它 SmtpClient 的所有引用,以便垃圾回收器可以回收占用的 SmtpClient 内存。

有关详细信息,请参阅 清理非托管资源 实现 Dispose 方法

每次释放对 Dispose 的最后一个引用前,均应调用 SmtpClient 。 否则,不会释放正在使用的资源,以便垃圾回收器可以回收内存。