【问题标题】:Difference between smtpClient.send() and smtpClient.SendAsync()?smtpClient.send() 和 smtpClient.SendAsync() 的区别?
【发布时间】:2026-01-01 09:35:01
【问题描述】:

我正在尝试从本地主机发送邮件..

在这样做时,我从不同站点获得了发送邮件的方法..但是在这样做时,我在 smtpClient.send()smtpClient.SendAsync() 之间感到困惑..

我想知道它们有什么不同???

提前谢谢..

【问题讨论】:

    标签: smtpclient


    【解决方案1】:

    smtpClient.send() 将在 main/ui 线程上启动发送并阻塞。
    smtpClient.SendAsync() 将从 .NET 线程池中选择一个线程并在该线程上执行该方法。所以你的主界面不会挂起或阻塞。

    异步方法调用 - http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx

    【讨论】:

    • 但是你能告诉我应该使用哪一个吗??
    • 如果发送涉及附件并且需要一些时间,请使用异步。但是您将不得不花一些时间阅读异步操作在 .NET 中的工作原理。 MSDN已经给出了smtpClient.SendAsync的例子,你可以继续使用。
    • @AseemGautam SendAsync() 不使用 ThreadPool 的线程它只是使用异步操作管理器
    • 这很好地解释了 SendAsync():docs.microsoft.com/en-us/dotnet/api/…
    【解决方案2】:

    SendAsyc - 将指定的电子邮件消息发送到 SMTP 服务器以进行传递。此方法不会阻塞调用线程,并允许调用者将对象传递给操作完成时调用的方法。更多详情:SmtpClient.SendAsync Method

    【讨论】: