zoukankan      html  css  js  c++  java
  • C#后台程序重启IIS,发邮件通知

    应用场景:IIS网站挂掉,系统自动重启IIS,通知相关联系人;

    主要代码:

    监控类

    public class monitoringiis
        {
            EmailSend send = new EmailSend();
            public void MonitoringISSAppPool(object obj)
            {
                string method_Start = "Start";
                string ISSAppPoolName = "";
                string iislist = System.Configuration.ConfigurationManager.AppSettings["iislist"];
                DirectoryEntry appPool = new DirectoryEntry("IIS://LOCALHOST/W3SVC/AppPools");
                while (true)
                {
                    try
                    {
                        foreach (DirectoryEntry item in appPool.Children)
                        {
                            string AppPoolCommand = item.Properties["ManagedPipelineMode"].Value.ToString();
                            string ManagedRuntimeVersion = item.Properties["ManagedRuntimeVersion"].Value.ToString();//,net版本号                    
                            string AppPoolState = item.Properties["AppPoolState"].Value.ToString();//当前状态                    
                            if (AppPoolState != "2" && iislist.Contains(item.Name.Trim()))
                            {
                                DirectoryEntry findPool = appPool.Children.Find(item.Name, "IIsApplicationPool");
                                findPool.Invoke(method_Start, null);
                                ISSAppPoolName = item.Name;
                                appPool.CommitChanges();
                                appPool.Close();
                                var IIsMsg = string.Format("应用池名称:[{0}],NET版本:{1},标识:{2},当前状态:[{3}],时间:{4}/n", item.Name, ManagedRuntimeVersion,
                                    item.SchemaClassName, "已启动", DateTime.Now.ToString());
                                logclass.Info(IIsMsg);
                            }
                        }
    
                        Thread.Sleep(180000);
    
                    }
                    catch (Exception ex)
                    {
    
                        logclass.Error("MonitoringISSAppPool:" + ISSAppPoolName + string.Format("==时间:{0},启动失败", DateTime.Now) + "==" + ex.Source + "==" + ex.InnerException + "==" + ex.TargetSite + "==" + ex.Message);//日志记录错误信息              
                        send.SendMail(string.Format("服务器:" + GetComputerInfo() + "==MonitoringISSAppPool:{0},时间:{1},启动失败", ISSAppPoolName, DateTime.Now) + "==" + ex.Message,
                            ISSAppPoolName + "ISS服务发生问题,请尽快查看原因并解决");//邮件发送错误信息    
                        Thread.Sleep(10000);
                    }
                }
            }
    
            /// <summary>获取当前计算机信息   例如:计算机名:aaa,IP:10.10.10.10</summary>        
            /// <returns></returns>        
            public static string GetComputerInfo()
            {
                var computerNmae = System.Net.Dns.GetHostName();//获取当前计算机名称            
                var computerIp = new System.Net.IPAddress(System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList[0].Address).ToString();
                //获取局域网IP                             
                return string.Format("PC_Name: {0},IP: {1}", computerNmae, computerIp);
            }
        }
    View Code

    发邮件类:

    public class EmailSend
        {
            public void SendMail(string sendmessage,string sendtitle)
            {
                string senduser = System.Configuration.ConfigurationManager.AppSettings["senduser"];
                string sendpwd = System.Configuration.ConfigurationManager.AppSettings["sendpwd"];
                string[] receiveusers = System.Configuration.ConfigurationManager.AppSettings["receiveusers"].Split('|');
                string[] fasong = senduser.Split('@');
                string[] fs = fasong[1].Split('.');
    
                //发送
                SmtpClient client = new SmtpClient("smtp.163.com");   //设置邮件协议
                client.UseDefaultCredentials = false;//这一句得写前面
                client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
                client.Credentials = new NetworkCredential(fasong[0].ToString(), sendpwd); //通过用户名和密码 认证
                foreach (string jsuser in receiveusers)
                {
                    MailMessage mmsg = new MailMessage(new MailAddress(senduser), new MailAddress(jsuser)); //发件人和收件人的邮箱地址
                    mmsg.Subject = sendtitle;      //邮件主题
                    mmsg.SubjectEncoding = Encoding.UTF8;   //主题编码
                    mmsg.Body = sendmessage;         //邮件正文
                    mmsg.BodyEncoding = Encoding.UTF8;      //正文编码
                    mmsg.IsBodyHtml = true;    //设置为HTML格式           
                    mmsg.Priority = MailPriority.High;   //优先级
                    try
                    {
                        client.Send(mmsg);
                    }
                    catch (Exception ex)
                    {
                        logclass.Debug("发送邮件失败:" + ex.Message);
                    }
                }
            }
        }
    View Code

    发邮件类(20170331) 使用授权码 

     1         /// <summary>
     2         /// 
     3         /// </summary>
     4         /// <param name="sendmessage"></param>
     5         /// <param name="sendtitle"></param>
     6         /// <param name="emails">多个email地址 以“,”隔开  如 1000@qq.com,kk@163.com</param>
     7         public void SendMail(string sendmessage, string sendtitle, string emails)
     8         {
     9             string senduser = System.Configuration.ConfigurationManager.AppSettings["senduser"];
    10             string sendsqm = System.Configuration.ConfigurationManager.AppSettings["sendsqm"];//使用授权码
    11             string[] receiveusers = emails.Split(',');
    12             string[] fasong = senduser.Split('@');
    13             string[] fs = fasong[1].Split('.');
    14 
    15             //发送
    16             SmtpClient client = new SmtpClient("smtp." + fs[0] + ".com");   //设置邮件协议    host: smtp.163.com  smtp.126.com smtp.qq.com
    17             //client.UseDefaultCredentials = false;//这一句得写前面
    18             client.UseDefaultCredentials = true;//这一句得写前面
    19             client.EnableSsl = true;
    20             client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
    21             client.Credentials = new NetworkCredential(fasong[0].ToString(), sendsqm); //通过用户名和密码 认证
    22             foreach (string jsuser in receiveusers)
    23             {
    24                 if (string.IsNullOrEmpty(jsuser)) continue;
    25                 MailMessage mmsg = new MailMessage(new MailAddress(senduser), new MailAddress(jsuser)); //发件人和收件人的邮箱地址
    26                 mmsg.Subject = sendtitle;      //邮件主题
    27                 mmsg.SubjectEncoding = Encoding.UTF8;   //主题编码
    28                 mmsg.Body = sendmessage;         //邮件正文
    29                 mmsg.BodyEncoding = Encoding.UTF8;      //正文编码
    30                 mmsg.IsBodyHtml = true;    //设置为HTML格式           
    31                 mmsg.Priority = MailPriority.High;   //优先级
    32                 try
    33                 {
    34                     client.Send(mmsg);
    35                 }
    36                 catch (Exception ex)
    37                 {
    38                     LogUtils.Error("发送邮件失败:" + ex.Message);
    39                 }
    40             }
    41         }
    View Code
  • 相关阅读:
    重要的API运算函数
    Chicken的代码解剖 :4 ChickenPawn_Chicken一小部分
    Chicken的代码解剖:5 Chicken中的两个接口及其相关
    项目实例:深投控股star rating评分插件
    项目实例:深投控股JQueryXmlMenu
    编程经验:VS2008注册方法
    编程经验:SQL Server Management Studio使用注意事项
    程序员面试题精选100题(07)翻转句子中单词的顺序
    程序员面试100题精选(8)
    Ogre框架的搭建过程
  • 原文地址:https://www.cnblogs.com/systemkk/p/4852051.html
Copyright © 2011-2022 走看看