我是ASP.NET程序员,没有创建Windows服务的经验。 我需要创建的服务应该在每个指定的时间段内向我们的客户发送电子邮件。此服务应解决在同时发送数百封电子邮件时的问题,并在服务器上阻止SMTP服务,而SMTP在闲置时有很多时间而不发送任何内容。
想法是创建一个服务,我将发送整个电子邮件和地址,在服务内部我将有一些类型的数据集(我不知道我应该在winforms / winservices中使用哪一个)和一些基本计时器功能(即每3秒获得第一封邮件并发送)... 事情是,有两种主要类型的邮件,注册邮件应该是主要优先级和提醒邮件(即你没有进入一个月的网站)优先级低。我更喜欢用两个数据集创建这个优先级问题,当主数据集为空时,重要的一个发送。
另一个问题是如何在同一台服务器上从asp.net应用程序访问此服务?
你如何在代码中写这个或至少指出我如何,我知道在MS网站上有很多关于基本服务的解释,但由于我不太了解问题,我更喜欢在这里解释它。
感谢您的时间。
答案 0 :(得分:0)
我建议您查看可用的各种电子邮件营销服务,许多提供API或至少可以通过.Net代码自动执行的流程。我真的会避免尝试设置你自己的邮件服务器,因为保持它的正常运行,即使是合法的,也很难,因为任何错误的滥用行为都会让你被列入黑名单,并且需要很长时间才能获得白名单(很多ICANN-持久的,合法的活动)所以不得不从一个新的IP再次开始是令人沮丧的。
与这个领域的专业人士合作,确保他们遵循ICANN流程和程序(以及您所做的那些),并且您会发现他们拥有您需要的一切并为您节省大量的麻烦。
答案 1 :(得分:0)
至于创建一个Web服务,那里有很多例子,只是谷歌的“c#windows服务示例”。 仅举两个例子:
对于数据交换:我会将必要的操作存储在数据库表中,并定期从服务中扫描这些表。 否则,您可以使用.NET远程处理或消息队列或.NET WCF。
HTH
马里奥
答案 2 :(得分:0)
首先,如果您知道如何从asp.net应用程序发送电子邮件,则根本不需要Windows服务。请继续阅读...
我遇到了与您类似的问题,因为我拥有自己网站的ISP对一天内可以发送的电子邮件有限制。因此,我创建了带有电子邮件的数据库表,并将其存储在那里,并创建了一个网页,检查了有效的限制,确定是否可以安全地发送电子邮件,如果是,则发送它。
发送(或不发送)后 - 该页面睡了一会儿(你可以将Sleep()插入其中 - 不要使用任何循环,因为它会消耗你的CPU)然后再通过http请求自动触发,如果有更多的邮件要发送。
填充邮件队列的每个页面也会触发邮件发送页面,因此当队列实际上为空时它不会运行。
我想,或者你真的去寻求服务。
答案 3 :(得分:0)
创建CONSOLE应用程序。
在数据库中创建2个队列。对于电子邮件。
在控制台应用程序中,定期轮询队列,并在适当的时候发送电子邮件。
在你对应用程序感到满意之前不要去服务。
完全调试后,创建服务,安装并让它运行。