邮件发回软件错误信息

3 篇文章 0 订阅
  • 设置捕获未处理异常
    //处理未捕获的异常
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    //处理“UI线程”异常
    Application.ThreadException += application_ThreadException;
    //处理“非UI线程”异常
    AppDomain.CurrentDomain.UnhandledException += currentDomain_UnhandledException;
    //处理“未观察到的异常”
    TaskScheduler.UnobservedTaskException += taskScheduler_UnobservedTaskException;
  • 邮件发送错误信息(body)
    /// <summary>
    /// 尹永贤
    /// 2016-11-24 19:20:18
    /// yinyongxian@qq.com
    /// </summary>
    static class CrashHandler
    {
        internal static void SendEmail(string body)
        {
            try
            {
                Send(body);
            }
            catch (Exception)
            {
                //不处理发送失败情况
            }
        }

        private static void Send(string body)
        {
            #region MailUser
            const string host = "smtp.qq.com";
            const string from = "yinyongxian@qq.com";
            const string to = "yinyongxian@qq.com";
            const string password = "***";
            #endregion
            var subject = GenerateSubject();
            var environmentMessage = GenerateEnvironmentMessage();
            body = environmentMessage + "<br/>" + body;

            var mailMessage = new MailMessage(from, to, subject, body)
            {
                BodyEncoding = Encoding.UTF8,
                IsBodyHtml = true
            };
            var smtpClient = new SmtpClient(host)
            {
                Credentials = new System.Net.NetworkCredential(from, password),
                DeliveryMethod = SmtpDeliveryMethod.Network
            };

            smtpClient.SendAsync(mailMessage, null);
        }

        private static string GenerateEnvironmentMessage()
        {
            var productName = Format("软件名称", CrashMessage.ProductName);
            var productVersion = Format("软件版本", CrashMessage.ProductVersion);
            var lastWriteTime = Format("编译时间", CrashMessage.LastWriteTime.ToString(CultureInfo.CurrentCulture));
            var machineName = Format("机器名称", CrashMessage.MachineName);
            var userName = Format("当前登录用户", CrashMessage.UserName);
            var osVersionString = Format("系统信息", CrashMessage.OsVersion.ToString());
            var platformString = Format("系统平台", CrashMessage.Platform.ToString());
            var processorCount = Format("处理器数量", CrashMessage.ProcessorCount.ToString());
            var dateTimeNow = Format("发生时间", CrashMessage.DateTimeNow.ToString(CultureInfo.CurrentCulture));
            const string remarks = "<p>来自蜂巢网管自动发送的电子邮件<p/>";

            var strings = new[]
            {
                productName,
                productVersion,
                lastWriteTime,
                machineName,
                userName,
                osVersionString,
                platformString,
                processorCount,
                dateTimeNow,
                remarks
            };
            var environmentMessage = string.Concat(strings);
            return environmentMessage;
        }

        private static string Format(string text, string value)
        {
            return string.Format("{0}: {1}<br/>", text, value);
        }

        private static string GenerateSubject()
        {
            return string.Format("{0}-{1}-{2}", CrashMessage.ProductName, CrashMessage.ProductVersion, CrashMessage.DateTimeNow);
        }
    }
  • 获取设备基本信息
    /// <summary>
    /// 尹永贤
    /// 2016-11-24 19:18:53
    /// yinyongxian@qq.com
    /// </summary>
    public class CrashMessage
    {
        /// <summary>
        /// 软件名称
        /// </summary>
        public static string ProductName
        {
            get { return Application.ProductName; }
        }

        /// <summary>
        /// 软件版本
        /// </summary>
        public static string ProductVersion
        {
            get { return Application.ProductVersion; }
        }

        /// <summary>
        /// 软件编译时间
        /// </summary>
        public static DateTime LastWriteTime
        {
            get
            {
                var fileInfo = new FileInfo(Application.ExecutablePath);
                return fileInfo.LastWriteTime;
            }
        }

        /// <summary>
        /// 机器名称
        /// </summary>
        public static string MachineName
        {
            get { return Environment.MachineName; }
        }

        /// <summary>
        /// 当前登录用户
        /// </summary>
        public static string UserName
        {
            get { return Environment.UserName; }
        }

        /// <summary>
        /// 系统信息
        /// </summary>
        public static OperatingSystem OsVersion
        {
            get { return Environment.OSVersion; }
        }

        /// <summary>
        /// 系统平台
        /// </summary>
        public static PlatformID Platform
        {
            get { return OsVersion.Platform; }
        }

        /// <summary>
        /// 处理器数量
        /// </summary>
        public static int ProcessorCount
        {
            get { return Environment.ProcessorCount; }
        }

        /// <summary>
        /// 当前时间
        /// </summary>
        public static DateTime DateTimeNow
        {
            get { return DateTime.Now; }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值