c# - 如何在 asp.net 中创建一个独立于主应用程序的服务

标签 c# asp.net email iis smtp

我在 asp.net 中有一个主应用程序。 我可以选择通过 SMTP 发送邮件。我想做一个单独的邮件发送过程。这意味着如果我点击 SEND MAIL 按钮,邮件应该从后台发送而不影响应用程序(像 separate service)。我已经尝试使用单独的线程 并且它工作正常但是是否有可能在不影响主应用程序的情况下进行单独的邮件发送过程。如果我关闭应用程序(应用程序池),那么它也应该发送邮件。

谢谢。

最佳答案

将邮件发送逻辑实现为 Windows 服务,并使用 IPC(例如通过 Mutex 和 MemoryMappedFile 共享内存)在您的 ASP.NET 应用程序和 Windows 服务之间进行通信。

这样做的好处是只要机器启动邮件发送逻辑就会运行...如果您需要持久性(例如在重启后记住未发送的消息)您可以使用数据库或文件系统...

编辑 - 更简单的选项:

在 IIS 中设置一个 SMTP Pickup 文件夹(它内置了这个选项!)并相应地配置您的 ASP.NET 应用程序(参见示例 http://www.singular.co.nz/blog/archive/2007/11/28/using-an-smtp-pickup-directory-delivery-method-for-asp-net-development.aspxhttp://www.singular.co.nz/blog/archive/2007/12/19/programmatically-setting-the-smtpclient-pickup-directory-location-at-runtime.aspx)。

通过这种方式,您的应用程序将邮件作为 .eml 文件保存到目录中,IIS 负责其余的工作(发送/重新发送/记录等)。 SmtpClient 能够使用内置的拾取文件夹!

关于c# - 如何在 asp.net 中创建一个独立于主应用程序的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938870/

相关文章:

asp.net - 我如何以编程方式在页面加载时将telerik radgrid置于 "add new"模式下

email - 在 Teamcity 中设置电子邮件通知

C# JsonConverter 无法从 JsonResult 反序列化对象

C#:在 RichTextBox 中粘贴 RTF,但保留颜色和格式(即:粗体、下划线等)

c# - 来自 sql 表的 TreeView

c# - 使用 sql 数据读取器循环遍历 sql 表中的所有值

email - 电子邮件签名中制表符是否正确呈现

iPhone:使用自定义内容类型发送电子邮件

c# - WPF 4.5 : How to create child thread and continue task to UI main thread?

c# - 持有线程的类的 IDisposable 实现