可以同时设置多个qq通知邮箱,和发送邮件的间隔时间,调用定时器实现。
启用邮箱按钮代码:
string printname = textBox5.Text;
if(printname !=""){
string time = textBox4.Text;
string a = textBox1.Text;
string b = textBox2.Text;
if (a != "" || b != "")
{
if (time != "")
{
System.Timers.Timer t = new System.Timers.Timer(Convert.ToDouble(time));
t.Elapsed += new System.Timers.ElapsedEventHandler(mail);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
((Button)sender).Enabled = false;
}
else
{
MessageBox.Show("请设置邮箱通知间隔时间!");
}
}
else { MessageBox.Show("请至少设置一个通知邮箱!"); }
}
else { MessageBox.Show("请先选择要监控的打印机!"); }
邮件通知、打印机ip获取、监控状态和ip以及时间插入sqlserver数据库代码实现:
//获得当前IP地址
IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];
string ip = ipAddr.ToString();
//插入数据库
string sql = "insert into listen values('" + ip + "','" + str + "','" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + "')";
SqlHelp sqlHelper = new SqlHelp();
sqlHelper.ExecuteNonQuery(sql);
封装邮件通知:
private void mail(object source, System.Timers.ElapsedEventArgs e)
{
string printname = textBox5.Text;
string str = PrinterStatusByName.GetPrinterStatusByName(printname);
IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];
string ip = ipAddr.ToString();
if (!str.Equals("准备就绪(Ready)"))
{
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("[email protected]");
string a = textBox1.Text;
string b = textBox2.Text;
if (a != "" && ip != "" && str != "")
{
mailMessage.To.Add(new MailAddress(a));
// mailMessage.To.Add(new MailAddress("[email protected]"));
mailMessage.Subject = "当前打印机状态!";
mailMessage.Body = "打印机IP地址:" + ip + "---------->" + str;
SmtpClient client = new SmtpClient();
client.Host = "smtp.qq.com";
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "密码");
client.Send(mailMessage);
}
if (b != "" && ip != "" && str != "")
{
//Console.WriteLine("jinlai");
mailMessage.To.Add(new MailAddress(b));
// mailMessage.To.Add(new MailAddress("[email protected]"));
mailMessage.Subject = "当前打印机状态!";
mailMessage.Body = "打印机IP地址:" + ip + "---------->" + str;
SmtpClient client = new SmtpClient();
client.Host = "smtp.qq.com";
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "密码");
client.Send(mailMessage);
}
}
打印机监控软件运行界面
C#显示当前计算机所有打印机名称,同时获取指定打印机的状态比如缺纸、缺墨等,并且生成记录日志和数据库,发送邮件通知当前打印出错消息,打包成exe安装文件——(一)封装打印机状态类型
https://blog.csdn.net/yangjueye/article/details/80276738
关于整套程序如果有不懂得欢迎微信扫码提问!