在特定时间发送电子邮件

时间:2015-03-10 14:18:22

标签: c# asp.net email smtp smtpclient

我想使用SMTP服务器发送电子邮件,但是在一定时间内。 是否有可能设置一些选项,以便它在SMTP服务器上的队列中,直到特定的时间和日期?

想法是避免在DB

中使用Windows服务或额外表
MailMessage message = new MailMessage("no-reply@tttt.com", "xxxx@gmail.com");
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true;
message.Subject = "Publishing Notification";
message.Body = "tes";
message.DeliveryNotificationOptions = DeliveryNotificationOptions.Delay;
SmtpClient client = new SmtpClient("xxxx", Int32.Parse("25"));
client.Send(message);

1 个答案:

答案 0 :(得分:1)

在给定时间执行某些操作是一个容易出现的问题,假设您有一个进程来托管它。但似乎你的客户拒绝到达那里。以下是两种方法:

  • 使用Sql Server作业执行数据库邮件任务。这可能是一个非常简单的入口,具体取决于数据的来源。
  • 使用计划任务执行命令行程序。或者使用Sql作业管理器来执行该程序,如果在那里获得一个sql作业比站起一个计划任务更容易。

Quartz.NET是一个很棒的库,我们经常使用它,但你仍然需要一个不断运行的服务来执行那里的计划任务。所以,如果你可以在你的网络应用程序上搭载它,Quartz会工作,但如果没有,那么你就会考虑编写服务。从那里你最好只是把它作为一个预定的任务,因为没有理由这是一个服务而不是安排。