定期发送自动电子邮件

时间:2013-01-24 08:37:41

标签: c# .net database postgresql

我有带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 个答案:

答案 0 :(得分:5)

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

一个简单的控制台应用程序是可以的,由Windows Scheduler或第三方调度程序安排。

要发送电子邮件,您可以

  • 使用.net提供的SMTPClient命名空间来发送电子邮件
  • 使用Amazon SES
  • 等第三方服务

答案 1 :(得分:3)

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

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

在网站上有一些例子。

答案 2 :(得分:1)

创建.Net控制台应用程序并不容易,该应用程序向DB发出查询,该应用程序将合同到期的所有员工记录在30天内到期。 使用Windows Scheduler安排在每天的特定时间运行。

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

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

希望有所帮助 米林德

答案 3 :(得分:0)

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