C#显示当前计算机所有打印机名称,同时获取指定打印机的状态比如缺纸、缺墨等,并且生成记录日志和数据库,发送邮件通知打印出错消息,打包成exe安装文件——(四)邮件通知打印机监控状态和ip并插入数据库

可以同时设置多个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

关于整套程序如果有不懂得欢迎微信扫码提问!


猜你喜欢

转载自blog.csdn.net/yangjueye/article/details/80592304
今日推荐