每天晚上8点使用Windows服务发送邮件 [英] send mail everyday at 8pm using windows services

查看:135
本文介绍了每天晚上8点使用Windows服务发送邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码每3分钟发送一次邮件。但我想每天晚上8点发送一次邮件 。如何在下面的代码中设置它。



Below code is sending mail every 3 minutes. But i want to send the Mail only once in every day at 8pm. How to set this in the below code.

public partial class Scheduler : ServiceBase
   {
       System.Timers.Timer createOrderTimer;
       private Timer timer1 = null;
       public Scheduler()
       {
           InitializeComponent();
       }

       protected override void OnStart(string[] args)
       {
           ////timer1 = new Timer();
           ////this.timer1.Interval = 30000;
           ////this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
           ////timer1.Enabled = true;
           ////Library.WriteErrorLog("Test Window Service started");
           createOrderTimer = new System.Timers.Timer();
           createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail);
           createOrderTimer.Interval = 180000;
           createOrderTimer.Enabled = true;
           createOrderTimer.AutoReset = true;
           createOrderTimer.Start();
       }

       private void timer1_Tick(object sender, ElapsedEventArgs e)
       {
           Library.WriteErrorLog("Timer Ticked and some job has been done successfully");
       }

       protected override void OnStop()
       {
           timer1.Enabled = false;
           Library.WriteErrorLog("Test Window Service stopped");
       }

       public void GetMail(object sender, System.Timers.ElapsedEventArgs args)
       {
           NetworkCredential cred = new NetworkCredential("abc@gmail.com", "abc");
           MailMessage msg = new MailMessage();
           msg.To.Add("to@abc.com");
           msg.Subject = "Welcome Venkat";

           msg.Body = "You Have Successfully Entered to venkat World!!!";
           msg.From = new MailAddress("from@gmail.com"); // Your Email Id
           SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
          // SmtpClient client1 = new SmtpClient("smtp.mail.yahoo.com", 465);
           client.Credentials = cred;
           client.EnableSsl = true;
           client.Send(msg);
       }
   }

推荐答案

除了别人的建议外,我不会用一个Windows服务,用于执行计划任务以发送电子邮件。



相反,安排一个控制台应用程序(甚至PowerShell脚本)安排在每天晚上8点运行(或无论如何使用 Windows任务计划程序 [ ^ ]。



计划任务更适合您的场景。操作系统已经提供了调度基础架构时,我认为在Windows服务上构建调度机制并不是很有意义。 Windows服务更适合于必须随时响应事件而不是特定和修复周期的进程。
Apart from what other people have suggested, I would not use a Windows Service to act a "Scheduled Task" to send emails.

Instead, have a console application (or even PowerShell Script) scheduled to run at 8PM everyday (or whatever) using Windows Task Scheduler[^].

A Scheduled Task is more appropriate for your scenario. I don't think it make a lot of sense building a scheduling mechanism on a windows service when OS already provides scheduling infrastructure. A Windows service is more appropriate for processes that have to respond to events at any moment and not at specific and fix periods.


计时器 Interval 以ms为单位,因此180000 = 3 * 60 * 1000 = 3分钟,您应该使用cron作业: https://github.com/ kevincolyar / CronNET [ ^ ]
The timer Interval is in ms so 180000 = 3*60*1000 = 3 min, you should use cron jobs instead : https://github.com/kevincolyar/CronNET[^]

您可以使用cron表达式 0 0 20 1/1 *创建CRON作业窗口服务

? *
(每天晚上8点运行)



如何创建cron-job-windows-service [ ^ ]
You can create a CRON job windows service
with cron expression 0 0 20 1/1 * ? * (runEveryday at 8pm)

how-to-create-cron-job-windows-service[^]


这篇关于每天晚上8点使用Windows服务发送邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆