2011-05-20 61 views
2

我正在制作一个带有asp.net C#的网页。从网页发送多封邮件Asp.net

我希望人们登录并输入报价请求。那么报价请求会通过电子邮件发送给所有相关人员进行报价(可能超过100人)。

很显然,我不能让用户长时间等待的100+的人通过电子邮件发送的网页将冻结。

我曾考虑在服务器上实现后端程序。检查一个文本文件或者什么时候该文本文件存在的形状。在数据库中搜索任何未通过电子邮件的报价。并通过电子邮件发送给相关人员。然后通过电子邮件将记录标记出来。

但是一定有更好的办法吗?是否有一个定制系统或某些设计用来做这种事情的东西?

回答

0

我会使用类似微软消息队列,然后有定期扫队列的任务。

我能得到网站推到队列,因为有队列建立为持续性,所以如果箱子崩溃,重启等不会丢失任何信息。

0

简单。只需发送它。如果它冻结超过0.1秒左右,则需要更好的硬件和配置。

  • 是否将SMTP类写入到FOLDER在光盘上,让本地安装的SMTP服务将其用作拾取目录。然后,你的页面在写入文件的那一刻完成。 Stnadard .NET类通过简单的配置设置支持此设置。不过,大多数人从来不会去阅读文档。

野应网络invovlved,仅有100文件生成左右。甚至有10个文件,每个包含10个密送收件人。成品。

生成10个小文件应该很胖。如果你的光盘超载得到一个小SSD;)他们几乎没有成本。

所有剩下的就是大量的编程工作,并引入了更多的观看到您的系统。

+0

这也是我也会用到的方法。但是,我只是生成并将电子邮件文件保存到SMTP服务器的队列文件夹中。 – 2011-05-20 12:11:25

+0

可能,但如果SMTP服务器关闭,则会增加一些问题。我使用Windows服务来复制那里的电子邮件...并注入一个跟踪代码。如果电子邮件作为垃圾邮件返回,我可以找出它的起源地址以及它是否真的来自网站;) – TomTom 2011-05-20 12:16:40

+0

是的。请注意,我不跟踪其他任何内容。我注入了两个GUID,这些GUID也会进入数据库并交叉引用生成该文件的用户,该用户是应用程序池的工作帐户,并且大多数时间唯一标识一个网站,至少一组网站(客户,多站点应用)。我还跟踪目标和起始地址的哈希值和长度 - 而不是地址。 BUt如果您突然以数百个单位开始发送同一地址的电子邮件,我会收到警告;) – TomTom 2011-05-20 13:04:42

0

你可以将两者结合起来,虽然它不会是我使用的方法。

但使用例如,您可以创建一个静态监听器接口,后端和(服务器)应用程序,而不是把一个文件,并定期检查,你可以ping你的后端操作开始操作。

0

在“收件人”或“抄送”字段中生成1个电子邮件,其中包含100个人应该而不是导致页面冻结。你真的观察过这种行为吗?如果是这样,请检查您的SMTP配置,因为听起来不对劲。

但是,我看到的解决方案很好用,就是让SQL数据库保存所有待发送的消息,然后让SQL Server每十分钟运行一次作业以运行该待处理的表并做电子邮件(而不是直接从.NET应用程序发送电子邮件)。

+1

将所有人添加到“收件人”或“抄送”会导致所有人都看到每个人的电子邮件地址。这是一个隐私问题。你可以用你的方法使用'BCC',但它不完全是一个可扩展的解决方案。 – 2011-05-20 12:22:37

+0

如果收件人没有链接在一起,比如单个公司,那么它只是一个隐私问题。对于大型组织中的内部应用程序,没有问题。这就是我所处的世界,所以我猜想,除非另有说明,否则我总是认为这是违约。这个问题意味着收件人在某个组织下,尽管它并不清晰。 – Graham 2011-07-25 20:32:14