using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Net.Mail;
using System.Net;
using System.Threading;
using System.Text.RegularExpressions;namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }
       string WatcherDirectory = "d:\\文件";
        protected override void OnStart(string[] args)
        {
            using (System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\文件\\log.txt", true))
            {
                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Start.");
            }        }        protected override void OnStop()
        {
            using (System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\文件\\log.txt", true))
            {
                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Stop.");
            }        }
        private void StartThread(object arg)
        {
            FileSystemEventArgs e = (FileSystemEventArgs)arg;
            Sends(e);
        }        private bool RegexMailValid(string str)
        {
            string match = @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$";
            if (Regex.IsMatch(str, match))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        private void Sends(FileSystemEventArgs e)
        {
            try
            {
            string createdFileName = e.Name;
            MailAddress from = new MailAddress("[email protected]");
            string toFileName = createdFileName.Substring(0,createdFileName.Length - 4);
            if (RegexMailValid(toFileName) == false) {
                using (System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\文件\\log.txt", true))
                {
                    sw.WriteLine(e.Name + " 发送失败  名字错误");
                }
                return;
            }            MailAddress to = new MailAddress(toFileName);
            
                //log created file name and send mail.
               
                //邮件主题、内容
                MailMessage message = new MailMessage(from, to);
                message.Subject = "流向";
                message.SubjectEncoding = System.Text.Encoding.UTF8;//5-1-a-s-p-x
                message.Body = "欢迎您";
                message.BodyEncoding = System.Text.Encoding.UTF8;
                //添加附件
                Attachment attachFile = new Attachment(e.FullPath);
                message.Attachments.Add(attachFile);
                //大部分邮件服务器均加smtp.前缀
                SmtpClient client = new SmtpClient("smtp." + from.Host);
                SendMail(client, from, "aaaaaa", to, message);
            }
            catch(Exception ex)
            {
                using (System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\文件\\log.txt", true))
                {
                    sw.WriteLine(e.Name +" 发送失败");
                }
                throw;
            }
        }
          void PDFFileWatcher_Created(object sender, FileSystemEventArgs e)
        {
            try
            {
                Thread th = new Thread(new ParameterizedThreadStart(StartThread));                  th.IsBackground = true;
                th.Start(e);
            }
            catch (Exception ex) { }          
        }          //根据指定的参数发送邮件
          private void SendMail(SmtpClient client, MailAddress from, string password, MailAddress to, MailMessage message)
          {
              //不使用默认凭证,注意此句必须放在client.Credentials的上面
              client.UseDefaultCredentials = false;
              //指定用户名、密码
              client.Credentials = new NetworkCredential(from.Address, password);
              //邮件通过网络发送到服务器
              client.DeliveryMethod = SmtpDeliveryMethod.Network;
              try
              {
                  client.Send(message);
                  using (System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\文件\\log.txt", true))
                  {
                      sw.WriteLine( to+"  发送成功");
                  }
              }
              catch
              {
                  using (System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\文件\\log.txt", true))
                  {
                      sw.WriteLine(to+" 发送失败");
                  }
                  throw;
              }
              finally
              {
                  //及时释放占用的资源
                  message.Dispose();
              }
          }    }
}
c#