自动发邮件的Windows服务解决方案

前阵子有位朋友问我,要写一个程序,在本地获取数据后,在指定时刻向目标邮箱发送邮件,现有如下解决方案,可供参考。呵呵,我也是个菜鸟,写得不好,请多指教,谢谢。

构建一个Windows服务,在指定时间点,从配置文件中读取发件人信息(包括SMTP地址,用户名,密码等),定义好邮件的标题和内容,然后就可以发送。当然,你还得把这个Windows服务安装好,并配置成自动启动。

-------------------------------------

源码下载请点 这里

-------------------------------------

那么,接下来,我们先构建一个Windows服务(用一个TImer控件控制定时刷新):

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.ServiceProcess;

using System.Text;

using System.Net.Mail;

using System.Net;

using System.Configuration;



namespace MailServer

{

    public partial class Service1 : ServiceBase

    {

        public Service1()

        {

            InitializeComponent();

        }



        protected override void OnStart(string[] args)

        {

            //当时间的分钟为偶数时

            while (DateTime.Now.Second % 2 == 0)

            {

                //定义邮件客户端

                SmtpClient client = new SmtpClient(

                    ConfigurationManager.AppSettings["smtpClient"],

                    int.Parse(ConfigurationManager.AppSettings["smtpProt"]));



                //定义发送方邮件的地址和密码

                client.Credentials = new NetworkCredential(

                    ConfigurationManager.AppSettings["from_address"],

                    ConfigurationManager.AppSettings["from_password"]);



                //定义邮件发送方及接收方

                MailMessage mail = new MailMessage(

                    new MailAddress(ConfigurationManager.AppSettings["from_address"], ConfigurationManager.AppSettings["from_displayName"]),

                    new MailAddress(ConfigurationManager.AppSettings["to_address"], ConfigurationManager.AppSettings["to_displayName"]));



                //定义邮件标题

                mail.Subject = "测试邮件[" + DateTime.Now.ToString() + "]";

                //定义邮件内容

                mail.Body = Guid.NewGuid().ToString();



                //发送邮件

                client.Send(mail);



            }

        }



        protected override void OnStop()

        {

            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。

           

        }

    }

}
 
-------------------
配置文件:
<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <appSettings>

    <add key="smtpClient" value="smtp.126.com"/>

    <add key="smtpProt" value="25"/>

    <add key="from_address" value="请输入你的邮箱地址如:[email protected]"/>

    <add key="from_displayName" value="Mr.Yang"/>

    <add key="from_password" value="请输入你的邮箱密码"/>

    <add key="to_address" value="[email protected]"/>

    <add key="to_displayName" value="**先生"/>

  </appSettings>

</configuration>

-------------------------------------

源码下载请点 这里

-------------------------------------




制作Windows服务安装程序请参考:ttp://www.cnblogs.com/tuyile006/archive/2006/11/27/573654.html

你可能感兴趣的:(windows)