如何让控制台应用程序不断发送电子邮件?

时间:2015-07-16 19:10:11

标签: c# sql-server email

我有一个C#控制台应用程序,它运行一个存储过程,将电子邮件数据从文本文件导入到SQL表中,然后使用该表的数据在C#中发送电子邮件(例如To,From,Body等)控制台应用。应用程序调用另一个存储过程,该过程收集尚未标记为已发送的所有记录并向其发送电子邮件。

我正在努力解决的问题是,这些电子邮件需要根据包含已删除的电子邮件信息的文本文件不断发送。我在任务计划程序中看到的运行应用程序的最低频率是每5分钟一次。

基本上我需要一种方法来连续发送基于已删除的平面文件的电子邮件,这些文件具有发送所需的电子邮件信息。

对此有什么好处?

2 个答案:

答案 0 :(得分:2)

如果使用getSelectedItems()类,使用此类可以检查是否创建或修改了新文件 如果是新文件,您可以打开文件并从那里阅读电子邮件。

答案 1 :(得分:1)

IMO一个好方法是完全放弃控制台应用程序。这是可以设置SQL Server来处理的东西。

您应该创建一个定期导入文件的SQL Server代理作业(每分钟一次,我认为是2005年的最低频率,但是在2008年还是10秒)。只需运行批量导入:

BULK INSERT mydatabase.mytable
   FROM 'c:\whatever\emailfile.csv'
   WITH
     (
        FIELDTERMINATOR =',',
        ROWTERMINATOR = '\n',
        FIRE_TRIGGERS
      )

您可以轻松地向作业添加第二步以检查新插入的数据并使用SQL Mail发送电子邮件。您还可以在接收数据的表上设置触发器,以便在每次插入行时发送电子邮件。请参阅:Send e-mail from a trigger

如果你在这里拥有非常高的吞吐量,并且你真的想要一个强大的流程并想要投入大量的工作,我建议你编写一个文件监控过程(作为一个Windows服务),它将新文件放入队列待处理。