从网页Asp.net发送多封电子邮件

时间:2011-05-20 11:23:15

标签: c# asp.net

我正在使用asp.net C#制作一个网页。

我希望人们登录并输入报价请求。然后将报价请求通过电子邮件发送给所有相关人员(可能是100多人)。

显然,我不能让用户坐下来等待100多人通过电子邮件发送,因为网页会冻结。

我考虑过在服务器上实现后端程序。检查文本文件或其他内容的perhapes以及何时存在该文本文件。在数据库中搜索任何未通过电子邮件发送的报价。并向相关人员发送电子邮件。然后将记录标记为通过电子邮件发送。

但必须有更好的方法吗?有没有一个que系统或设计用来做这样的事情?

5 个答案:

答案 0 :(得分:0)

您可以使用

ThreadPool.QueueUserWorkItem

在循环中排队发送电子邮件。有关信息,请参阅http://msdn.microsoft.com/en-us/library/system.threading.threadpool.queueuserworkitem.aspx

答案 1 :(得分:0)

我会使用类似Microsoft消息队列的东西,然后有一个定期扫描队列的任务。

我会让网站推送到队列,因为队列设置为持久性,所以如果盒子崩溃,重启等等,没有任何东西丢失。

答案 2 :(得分:0)

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

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

Noo网络invovlved,只有100个文件生成左右。甚至10个文件,每个包含10个密件抄送收件人。结束。

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

其余的都是大量的编程工作,并引入更多内容来监视您的系统。

答案 3 :(得分:0)

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

但是使用您的示例,您可以为后端(服务器)应用程序创建静态侦听器接口,而不是定期检查文件并检查,您可以ping后端操作以启动操作。

答案 4 :(得分:0)

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

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