赞
踩
自动运维监控客户端在自动关闭时,需要给实施同学发送提醒邮件。支持163邮箱、qq邮箱、火狐邮箱等各种通用邮箱。
定时器+发送邮件
- using ITSLog.LogManage;
- using System;
- using System.Collections.Generic;
- using System.Net;
- using System.Net.Mail;
-
- namespace SystemMonitor.Util
- {
- public static class MailModel
- {
- private static KSLog log = LogService.GetKSlog(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
- /// <summary>
- /// 发送邮件
- /// </summary>
- /// <param name="mailEntity"></param>
- public static void SendMonitorEmail(MailEntity mailEntity)
- {
- //MailMessage mail = new MailMessage(mailEntity.SendMailAdress, mailEntity.ReciveAdress);
- MailMessage mail = new MailMessage();
- mail.From = new MailAddress(mailEntity.SendMailAdress);
- foreach (var toItem in mailEntity.ReciveAdress)
- {
- mail.To.Add(new MailAddress(toItem));
- }
- SmtpClient client = new SmtpClient();
-
- // 设置SMTP服务器和其他参数
- //client.Port = 465; // SMTP端口(通常用于TLS)
- client.DeliveryMethod = SmtpDeliveryMethod.Network;
- //使用自己的验证邮件设置为false
- client.UseDefaultCredentials = false;
- client.EnableSsl = true;
- // 你的SMTP服务器地址
- string[] addressor = mailEntity.SendMailAdress.Split(new Char[] { '@', '.' });
- switch (addressor[1])
- {
- case "163":
- client.Host = "smtp.163.com";
- break;
- case "126":
- client.Host = "smtp.126.com";
- break;
- case "qq":
- client.Host = "smtp.qq.com";
- break;
- case "gmail":
- client.Host = "smtp.gmail.com";
- break;
- case "hotmail":
- client.Host = "smtp.live.com";//outlook邮箱//client.Port = 587;
- break;
- case "foxmail":
- client.Host = "smtp.foxmail.com";
- break;
- case "sina":
- client.Host = "smtp.sina.com.cn";
- break;
- default:
- client.Host = "smtp.exmail.qq.com";//qq企业邮箱
- break;
- }
- //client.Host = mailEntity.StmpHost;
-
- // 设置你的邮箱凭据(如果需要)
- NetworkCredential credentials = new NetworkCredential(mailEntity.UseCode, mailEntity.PassWord);
- client.Credentials = credentials;
-
- // 设置邮件内容
- mail.Subject = mailEntity.MailSubject;
- mail.Body = mailEntity.MailBody;
- mail.SubjectEncoding = System.Text.Encoding.UTF8;
- mail.BodyEncoding = System.Text.Encoding.UTF8;
- mail.Priority = System.Net.Mail.MailPriority.Normal;
- mail.IsBodyHtml = true;
- mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
- if (mailEntity.accessoryPath != null)
- {
- foreach (string path in mailEntity.accessoryPath)
- {
- //将附件添加到邮件
- mail.Attachments.Add(new Attachment(path));
- //获取或设置此电子邮件的发送通知。
- mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
- }
- }
-
- // 发送邮件
- try
- {
- client.Send(mail);
- log.Debug(DateTime.Now.ToString() + "邮件发送成功");
- }
- catch (Exception ex)
- {
- log.Debug("初始化停止启动日期失败 :" + ex.ToString());
- }
- finally
- {
- client.Dispose();
- }
- }
- }
-
- /// <summary>
- /// 邮件实体类
- /// </summary>
- public class MailEntity
- {
- /// <summary>
- /// 发送地址
- /// </summary>
- public string SendMailAdress;
- /// <summary>
- /// 接收地址
- /// </summary>
- public List<string> ReciveAdress;
- /// <summary>
- /// 用户
- /// </summary>
- public string UseCode;
- /// <summary>
- /// 密码
- /// </summary>
- public string PassWord;
- /// <summary>
- /// 标题
- /// </summary>
- public string MailSubject;
- /// <summary>
- /// 邮件主体
- /// </summary>
- public string MailBody;
- /// <summary>
- /// 抄送地址
- /// </summary>
- public List<string> accessoryPath { get; set; }
- }
- }

- #region 邮件发送相关
- /// <summary>
- /// 邮件触发器
- /// </summary>
- private System.Windows.Forms.Timer dailyMailTimer;
- /// <summary>
- ///
- /// </summary>
- private DateTime nextRunTime = DateTime.MinValue; // 初始化为一个无效时间
- private void InitializeTimer()
-
- {
- dailyMailTimer = new System.Windows.Forms.Timer();
- dailyMailTimer.Interval = 1000; // 1秒,用于检查时间
- dailyMailTimer.Tick += DailyTimer_Tick;
- dailyMailTimer.Start(); // 启动Timer
- }
- private void SetNextRunTime()
- {
- // 设置下一次运行时间为今天的15:50,如果已经过了这个时间,则设置为明天的15:50
- DateTime now = DateTime.Now;
- closeTime = Convert.ToDateTime(ConvertDate(InitDate)).Add(TimeSpan.Parse(Config.AutoCloseTime));
- DateTime sendMailTime = closeTime.AddMinutes(10);
- if (sendMailTime < now)
- {
- sendMailTime = sendMailTime.AddDays(1); // 设置为明天的同一时间
- }
- nextRunTime = sendMailTime;
- }
-
- private void DailyTimer_Tick(object sender, EventArgs e)
- {
- if (DateTime.Now >= nextRunTime)
- {
- dailyMailTimer.Stop(); // 停止Timer,防止在SendEmail期间再次触发
- SendEmail(); // 执行任务
- SetNextRunTime(); // 重置下一次运行时间
- dailyMailTimer.Start(); // 重新启动Timer
- }
- }
- /// <summary>
- /// 校验条件满足送发邮件
- /// </summary>
- public void SendEmail()
- {
- if (Config.SendMailAddress == "" || Config.SendMailAddress == null) return;
- if (Config.ReciveMailAddress == "" || Config.ReciveMailAddress == null) return;
- if (Config.Mailsecret == "" || Config.Mailsecret == null) return;
-
-
- if (true)//校验条件
- {
- MailEntity mailEntity = new MailEntity
- {
- SendMailAdress = Config.SendMailAddress,
- UseCode = Config.SendMailAddress,
- ReciveAdress = new System.Collections.Generic.List<string>() { Config.ReciveMailAddress },
- PassWord = Config.Mailsecret,
- MailSubject = "邮件名称",
- MailBody = "邮件主体"
- };
- MailModel.SendMonitorEmail(mailEntity);
- }
-
-
- }
- #endregion

生活不易,猫猫叹气。Q-Q
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。