如何在asp.net中自动每月通过电子邮件发送报告

时间:2011-05-04 06:09:06

标签: asp.net

任何人都可以向我发送有关此问题的解决方案。在这里,我想发送自动生成并附加到邮件的水晶报告。这里的报告可以通过asp .net和c#Lang自动生成。给我发送解决方案。

3 个答案:

答案 0 :(得分:2)

我同意上述建议使用预定任务(控制台应用程序),但是没有人提到你不能安排在没有基本调度HTTP请求的外部实用程序的情况下按照这样的计划执行网页。更不用说需要每月执行的报告通常无法在有限(默认)响应超时之前完成执行。这是一个坏主意。但是,为了回答这个问题,我会说你可以编写一个简单的VBS或C#(。NET)控制台应用程序来为你的网络服务器创建一个HttpRequest并将结果发送到一个电子邮件中。然后将该控制台应用程序添加到Windows任务计划程序以每月执行一次。现在您的ASP.NET应用程序正在发送每月电子邮件。不要忘记您的C#控制台应用程序需要处理登录和身份验证(如有必要)。

替代方法是(不可靠)在调用HttpApplication.Init方法时在global.asa(应用程序范围)内创建计时器(后台进程)。这是不可靠的原因是Application对象可以随时回收,如果一段时间内没有向该应用程序发出请求,甚至可能无法运行。此外,如果您具有Web场环境,则每个服务器(以及Web园场景中的每个服务器进程)都会运行其自己的HtppApplication对象实例。它们甚至可能在同一个处理空间内重叠,而其中一个正在被垃圾收集。

答案 1 :(得分:1)

您可以使用以下任何一项:

1. set "windows task scheduler" to schedule an .vbs file that triggers an "asp.net page or webservice" to run and do your logic once in a month (Recommended).

2. Create a "windows service" project and set a timer within its onstart event.(windows service creation only available in professional/Ultimate versions of visual studio, but editing and compilation can be done in other versions) 

由于逻辑应该在一个月内完成一次,建议第1步

请参阅创建调用asp.net页面/ Web服务的.vbs文件的步骤

  1. 打开记事本并将以下代码复制并保存

    'Declare variables
    Dim objRequest
    Dim URL
    
    Set objRequest = CreateObject("Microsoft.XMLHTTP")
    
    'Put together the URL link appending the Variables.
    URL = "http://computerName/VirtualDirectoryName/Logic.aspx"
    
    'Open the HTTP request and pass the URL to the objRequest object
    objRequest.open "POST", URL , false
    
    'Send the HTML Request
    objRequest.Send
    
    'Set the object to nothing
    Set objRequest = Nothing
    
    1. 将扩展名从“.txt”更改为“.vbs”

    2. 在Windows“任务计划程序”中创建一个新计划并指向新创建的sample.vbs文件,该文件将调用您的逻辑所在的页面(http://computerName/VirtualDirectoryName/Logic.aspx)并编辑一个月内运行一次的设置。

答案 2 :(得分:0)

  

每月生成自动使用   Windows服务