定期发送自动电子邮件

本文关键字:电子邮件 | 更新日期: 2023-09-27 17:56:01

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

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

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

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

定期发送自动电子邮件

正如

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

一个简单的控制台应用程序是可以的,由Windows计划程序或第三方计划程序计划。

要发送电子邮件,您可以

  • 使用 .net 提供的 SMTPClient 命名空间发送电子邮件
  • 使用第三方服务,如亚马逊 SES

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

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

在网站上有一些例子。

创建 .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
}

希望有帮助米林德

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