【问题标题】:Queueing framework solution排队框架解决方案
【发布时间】:2011-03-08 14:11:12
【问题描述】:

我想解决这样的问题:我有一个 HTML 表单(如注册表单),提交会发送电子邮件。现在我将它作为页面请求的一部分发送。明显的缺点:

  • 使请求更长
  • 有时 smtp 服务器已关闭,或超时且未发送电子邮件

在使用 PHP 时,我使用了基于队列的解决方案 - 我一直将对象/xml 放入队列主机,然后某种客户端检查了该队列。如果队列任务被成功处理,它会从队列中删除任务。我想知道,在 Windows / .NET 平台上是否有类似的实现?

谢谢,帕维尔

【问题讨论】:

    标签: c# .net queue task-queue


    【解决方案1】:

    MSMQ 提供了强大的队列功能,在 .NET 中很容易使用。 Accessing Message Queues 可能是一个不错的起点。

    【讨论】:

    • 看起来不错。我完全忘记了 MSMQ...谢谢。
    【解决方案2】:

    啊——为什么?

    我有一个提交发送电子邮件的 HTML 表单(如注册表单)。

    让提交将电子邮件写入本地投递目录,然后使用 Windows 系统的 SMTP 服务将它们提交到您的提供商电子邮件服务器。或者使用您自己的服务将它们复制到外发电子邮件提取文件夹(我这样做是为了输入指向该网站的代码以进行跟踪)。

    这些是提供的标准方法。

    【讨论】:

    • 哇。将电子邮件内容写入硬盘?我在发送电子邮件时设置的电子邮件主题、收件人、发件人、抄送等属性呢?抱歉,您能详细说明一下吗? :)
    • 简单。 EMAIL 是通过 HTTP 传输的文本文件。它是完全编码的 - 仔细 - 包括完整的标题信息,包括发件人和收件人。再次提取这些没问题。 imar.spaanjaars.com/496/…
    • 我一定已经停止了思考 :) 我虽然你提到了纯 HTML 电子邮件内容......无论如何,它看起来很有趣。发送这些电子邮件怎么样?我刚刚碰到一些文章,声称加载 eml 文件并发送它并不简单?你如何发送它们?
    • 正如我所说 - 您可以将它们写入本地 SMTP 服务提取文件夹。猜猜为什么这被称为拾取文件夹。提示:服务器会自动接收电子邮件;)并发送它们。
    • 啊,我很困惑,正如上面文章中所说“......从现在开始,您的电子邮件将作为 .eml 文件放在本地文件夹 C:\TempMail 中...... 。”
    【解决方案3】:

    您不一定需要这样的队列。您可以在 System.Net.Mail.SmtpClient 类上使用 SendAsync 方法。这将立即返回,不会阻塞页面。

    见:http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx

    【讨论】:

    • 不幸的是,应用程序正在使用 3rd 方 lib 电子邮件解决方案。但是很高兴知道 .NET 中存在这样的类,不过谢谢!也想把它放在队列中,因为它最近发生了很多次,什么 SMTP 服务器宕机了。
    • 我不知道您为什么需要第三方电子邮件解决方案。它们通常是蛇油。内置的很好。如果您遇到 SMTP 传递可靠性问题,您可以将邮件传递到本地 IIS SMTP 服务器并将其中继到您的真实服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2011-10-23
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    相关资源
    最近更新 更多