使用Windows服务实现自动发送邮件通知

标签: windows C#
发布时间: 2014/1/3 14:33:48

简介

微软的windows服务,以前以NT服务著称。它可以使你在自己的系统会话的基础上,创建一个长时间运行的可执行应用程序。这些服务可以在开机的时候自动启动,可以中止、重启,并且不现实任何用户界面。在你使用服务器或者你需要在一个机器上长期运行,且不能干扰其他用户使用该电脑的时候,服务的特性,就使它成为了非常理想的一种技术。
一个Windows服务可以由微软的VS或者Embarcadero Delphi等开发工具来创建。为了让程序真正成为windows系统的服务,就需要程序可以被服务控制管理器启动、停止、中止。服务控制管理器是一个启动和停止服务的一个windows操作系统的组件。

代码

  •  打开 Visual Studio 

  •  打开文件->新建->项目

  •  选择Windows 服务

  •  右键Service1.cs 在下拉菜单中选择属性

  •  在属性窗体中单击,添加安装程序:

    Windows Service

  • 右键serviceInstaller1,选择属性

  • 改变DisplayName, ServiceName为SeraMailService

  • 启动类型为自动启动

    Windows Service

  • 右键serviceProcessInstaller1 ,之后选择属性

    更改用户为LocalSystem

    右键Service1.cs设计文件,选择查看代码

    Windows Service

    在OnStart方法中,输入下列代码:

    public void GetMail(object sender, System.Timers.ElapsedEventArgs args)
            {
                NetworkCredential cred = new NetworkCredential("email@lafarge.com", "Password");
                MailMessage msg = new MailMessage();
                msg.To.Add("email@apsissolutions.com");
                msg.Subject = "Welcome JUBAYER";
     
                msg.Body = "You Have Successfully Entered to Sera's World!!!";
                msg.From = new MailAddress("email@apsissolutions.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);
            }

    为了使这个方法一直运行,我们需要添加时距。
    在onload 方法之前,插入下列代码:

    System.Timers.Timer createOrderTimer;

    在onStart 方法中,输入下列代码:

    createOrderTimer = new System.Timers.Timer();
    createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail);
    createOrderTimer.Interval = 180000;//Set Three minutes intervals
    createOrderTimer.Enabled = true;
    createOrderTimer.AutoReset = true;
    createOrderTimer.Start();

全部代码如下: 

System.Timers.Timer createOrderTimer;
 
        public Service1()
        {
            InitializeComponent();
        }
 
        protected override void OnStart(string[] args)
        {
            createOrderTimer = new System.Timers.Timer();
            createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail);
            createOrderTimer.Interval = 500;
            createOrderTimer.Enabled = true;
            createOrderTimer.AutoReset = true;
            createOrderTimer.Start();           
        }
 
        public void GetMail(object sender, System.Timers.ElapsedEventArgs args)
        {
            NetworkCredential cred = new NetworkCredential("email@lafarge.com", "Password");
            MailMessage msg = new MailMessage();
            msg.To.Add("email@apsissolutions.com");
            msg.Subject = "Welcome JUBAYER";
 
            msg.Body = "You Have Successfully Entered to Sera's World!!!";
            msg.From = new MailAddress("email@apsissolutions.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);
        }


现在用Ctrl+Shift+B编译该服务。
在命令行模式下,输入代码,来安装InstallUtil.exe。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

安装服务的指令为: 

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>InstallUtil.exe 
"C:\Documents and
Settings\Administrator\My Documents\Visual Studio 2008\Projects\SeraMailService\
SeraMailService\bin\Debug\SeraMailService.exe"

在运行的窗体中输入services.msc命令,来查看操作系统的服务。右键所安装的服务名称,启动服务即可。
卸载服务的指令如下:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>InstallUtil.exe /u 
"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\
Projects\SeraMailService\SeraMailService\bin\Debug\SeraMailService.exe"



赞助商