3

我有带有 PostgreSQL 数据库的 Windows 服务器。我在数据库中存储了包括合同到期日在内的员工数据。我想在到期日前 30 天为每位员工发送一封自动电子邮件。(每个员工都有一个电子邮件帐户)。最好的方法是什么?我正在考虑执行以下操作,请您告知这是否是最好的方法,如果我需要回答这些问题:

  • 构建 WinForm C# 应用程序:
  • 每天访问 PostgreSQL(我知道如何处理 Postgresql,但是how to make it per each new day (schedule task?)?)

  • 将机器日期与数据库中的所有到期日期进行比较

  • 如果差值等于或小于 30 天,则会向员工发送自动邮件。( how to send emails using C#}
4

4 回答 4

5

正如@Middas 建议的那样,编写一个简单的控制台应用程序将负责在应用程序之外进行调度。

一个简单的控制台应用程序就可以了,由 Windows 调度程序或第 3 方调度程序调度就可以了。

对于发送电子邮件,您可以

于 2013-01-24T08:48:59.027 回答
3

您可以使用Quartz.NET来安排负责发送电子邮件的方法。

Quartz.NET 使用 cron 时间来配置何时执行您的代码。

在网站上有一些例子。

于 2013-01-24T20:47:43.993 回答
1

创建 .Net 控制台应用程序会不会很容易,该应用程序会触发对数据库的查询,该数据库会带来合同在 30 天内到期的所有员工记录。使用 Windows 调度程序将其安排在每天的特定时间运行。

现在要使用 C# 发送电子邮件,请尝试以下代码。

MailMessage mailObj = new MailMessage(strFrom, strTo, strSubject, strBody);
SmtpClient SMTPObj = new SmtpClient(IPAddress,port);
try
{
  SMTPObj.Send(mailObj);
}
catch (Exception ex)
{
  //Handle Exception
}

希望对米林有帮助

于 2013-01-24T08:52:49.653 回答
0

我会按照您的建议使用 Windows 服务。将服务计时器设置为 30 秒,然后检查时间是否在 00:00:00 和 00:00:00 之间,发送电子邮件。这意味着您不必在需要时尝试elapsed触发事件。

于 2013-01-24T08:43:18.420 回答