【发布时间】:2015-02-24 17:01:01
【问题描述】:
我正在构建必须发送电子邮件的 winforms 应用程序。我希望能够调用 SmtpClient.SendAsync 方法,然后允许用户立即关闭应用程序(我对在回调函数中获取发送结果不感兴趣)。如果用户停止应用程序,则不会发送电子邮件....如果应用程序保持运行,则按预期发送电子邮件... 有什么建议,我如何将所有相关详细信息传递给 smtp 服务器并关闭我的应用程序?
谢谢
【问题讨论】:
-
这不是它的工作方式,这不是任何工作的方式......异步并不意味着 “我对结果不感兴趣” 也不是 “即使我终止了我的应用程序,也要继续这样做” 并发送电子邮件包括与 SMTP 服务器通信并保持打开连接,直到发送整个消息 - 对于每条消息。这需要时间,而且您要发送的消息越多,时间越长。如果您想要并且能够将消息排入队列,您可能需要考虑将实际发送任务卸载到 Windows 服务。
-
或者(除了 CodeCaster 所说的)将执行派生到一个单独的进程。
-
我理解你的意思,你建议将发送逻辑替换为Windows服务,并从我的winforms应用程序中调用它?
-
@Lev 是的,这就是我的建议。 :)
-
各位,非常感谢您的帮助和建议
标签: c# winforms smtpclient