应用场景: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 != "" && 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(); }
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();
}
}
} /// <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[].Address).ToString();
//获取局域网IP
return string.Format("PC_Name: {0},IP: {1}", computerNmae, computerIp);
}
}

发邮件类:

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[].Split('.'); //发送
SmtpClient client = new SmtpClient("smtp.163.com"); //设置邮件协议
client.UseDefaultCredentials = false;//这一句得写前面
client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
client.Credentials = new NetworkCredential(fasong[].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);
}
}
}
}

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

         /// <summary>
///
/// </summary>
/// <param name="sendmessage"></param>
/// <param name="sendtitle"></param>
/// <param name="emails">多个email地址 以“,”隔开 如 1000@qq.com,kk@163.com</param>
public void SendMail(string sendmessage, string sendtitle, string emails)
{
string senduser = System.Configuration.ConfigurationManager.AppSettings["senduser"];
string sendsqm = System.Configuration.ConfigurationManager.AppSettings["sendsqm"];//使用授权码
string[] receiveusers = emails.Split(',');
string[] fasong = senduser.Split('@');
string[] fs = fasong[].Split('.'); //发送
SmtpClient client = new SmtpClient("smtp." + fs[] + ".com"); //设置邮件协议 host: smtp.163.com smtp.126.com smtp.qq.com
//client.UseDefaultCredentials = false;//这一句得写前面
client.UseDefaultCredentials = true;//这一句得写前面
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
client.Credentials = new NetworkCredential(fasong[].ToString(), sendsqm); //通过用户名和密码 认证
foreach (string jsuser in receiveusers)
{
if (string.IsNullOrEmpty(jsuser)) continue;
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)
{
LogUtils.Error("发送邮件失败:" + ex.Message);
}
}
}

C#后台程序重启IIS,发邮件通知的更多相关文章

  1. paip.数据库发邮件通知配置

    paip.数据库发邮件通知配置 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  2. python 检测nginx状态,若无法访问发邮件通知

    应用场景:用来检测网站可用性,访问失败,则发邮件通知 #!/usr/bin/env python import urllib2,time,smtplib,string,logging from con ...

  3. 实现celery中出现拥挤队列时,及时发邮件通知

    里面有几个常用的功能,以后值得借鉴. 如获取脚本目录,IP,获取shell返回值,发送邮件等.. 上午写完,中午测试,下午上线~~ #!/usr/bin/env python # -*- coding ...

  4. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  5. jira6.3.6创建问题不自动发邮件通知的问题

    装完jira6.3.6后,设置好邮件服务器,测试没有问题.但是创建问题不自动发邮件提示用户.折腾了大半天,请教了一位大神,终于搞定.步骤是: agile->系统->用户界面->用户缺 ...

  6. jenkin 构建失败 才发邮件通知

    使用场景:自动化测试,一般需要配置定时执行(每天执行一次,没周执行一次),如果有失败,则发邮件给相关人员关注.此时需要使用jenkins的邮件发送配置.修改job的configure配置步骤如下: 1 ...

  7. 检测MYSQL不同步发邮件通知的脚本

    脚本代码如下:#!/bin/bash                                                                                   ...

  8. Java实现发邮件功能---网易邮箱

    目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...

  9. Boss直聘邮件通知小脚本

    Boss 基于Python3的找工作利器--Boss直聘来消息邮件通知, 自动发送简历脚本,O(∩_∩)O~ 无聊写的,因为有时候觉得找工作心急如焚,想自动回复自动发简历啊有木有~~~ github地 ...

随机推荐

  1. Android BaseAdapter 数据和显示之间的Adapter 接口

    http://www.cnblogs.com/mandroid/archive/2011/04/05/2005525.html

  2. 第九章 企业项目开发--分布式缓存Redis(1)

    注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis 1.1.为什么用分布式缓存(或者说本地缓存存在的问题 ...

  3. jquery Ajax的load、post、get、put、delete的用法

    1.load() load()方法是jquery中最简单和常用的Ajax方法,能载入远程html代码并插入到DOM中,结构为load( url [, data] [, callback]);     ...

  4. 用MySQL实现分页查询

    MySQL中实现分页查询语句: //定义分页需要的变量 int pageNow=2;//当前页 int pageSize=3;//指定每页显示3条记录 int pageCount=1;//该值是计算出 ...

  5. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

  6. scp不可用:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! After doing ssh are you seeing this error.No proble ...

  7. Mutual Training for Wannafly Union #1解题报告

    ---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...

  8. UISlider

    UISlider是iOS中的滑块控件 通常⽤于控制视频播放进度,控制⾳量等. 它继承于UIControl,滑块提供了⼀系列连续的值,滑块停 在不同的位置,获取到滑块上的值也不同.   minimumV ...

  9. Install Java1.6

    声明:一下内容主要来自网络,本来在此基础上根据自己的成功经验做了一些浅陋的(但有价值的)备注说明和修改. (本人也是ubuntu 11.10版本,但是是64位的,因此安装的java也是64位版本.) ...

  10. BCG界面库下的Windows8 UI界面样式www.webui8.com

    BCG界面库下的Windows8 UI界面样式(Metro风格)控件主要有以下一些功能: 规则的大块磁贴 支持完整键盘导航 Tile组 标题(Caption) 标题按钮(Caption buttons ...