http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3433|回复: 0

[C#语言基础] 我想做一个服务 监控文件夹 自动发送邮件 最好是多线程的 我自己做了一个出错

[复制链接]
发表于 2013-11-1 21:29:07 | 显示全部楼层 |阅读模式
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("5105155@qq.com");
            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();
              }
          }

    }
}



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-15 14:23

© 2014-2021

快速回复 返回顶部 返回列表