设定电脑在开机后自动发送一封邮件

前言

由于微软傻逼,我的NAS会不定期自动重启(使用win10 1709),所以我需要知道NAS在什么时候重启,并且远程开启utorrent。研究了许久,找到了一个还比较好的实施方案。

一位老哥提供的方案,但是有部分可以优化的地方

具体改进

前三步没有问题,照做即可

在第四步编码过程中,有小部分地方可以优化

  • 优化一
protected override void OnStart(string[] args)
{
    createOrderTimer = new System.Timers.Timer();
    createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(Page_Load);
    createOrderTimer.Interval = 60000;
    createOrderTimer.Enabled = true;
    createOrderTimer.AutoReset = false;
    Ping ping = new Ping();
    PingReply pr = ping.Send("baidu.com");
    do
    {
        pr = ping.Send("baidu.com");
        if (pr.Status == IPStatus.Success)
        {
            createOrderTimer.Start();
        }
    } while (pr.Status != IPStatus.Success);
}
......
    
client.Send(mailMessage);
//Context.Response.Write("发送成功");
//StopWindowsService("AutoSendEmail");
//将停止服务注释掉,实际上StopWindowsService与StartWindowsService都不会用到
......

将原本在Page_Load中的ping判断提前,并取消createOrderTimer的循环。即循环外提,原来的循环必须靠停止服务。而在实际实验中发现,停止服务会让下次无法自动重启。这一点可能是环境原因。并且将延迟增大到了1分钟,防止意外状况的出现。

  • 优化二
mailMessage.Subject = System.Environment.MachineName + "开机完成";
//邮件内容。
mailMessage.Body = "这是一封自动发送的邮件,发送的本地时间为:"+DateTime.Now;

原本写死了,这下可以拓展到不同的机器,方便同时远程得知不同设备的状况

  • 安装部分冗余解释

实际上我们不需要按照原文设置一个批处理文件,自行更改即可

  1. 用管理员模式运行CMD。如不能直接以管理员模式运行CMD,可以右键开始图标,运行管理员模式的power shell,再输入cmd,即为管理员模式运行CMD

    Windows PowerShell
    版权所有 (C) Microsoft Corporation。保留所有权利。
    
    PS C:\Users\ljz131> cmd
    Microsoft Windows [版本 10.0.16299.611]
    (c) 2017 Microsoft Corporation。保留所有权利。
    
    C:\Users\ljz131>
    
  2. 进入C:\Windows\Microsoft.NET\Framework\v4.0.30319\

  3. 直接以InstallUtil为前缀安装或卸载

    //安装
    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
    InstallUtil "......\WindowsService1.exe"
    //双引号内为WindowsService1.exe所在的具体目录,用双引号括起来可以防止路径有空格导致CMD错误识别
    
    //卸载
    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
    InstallUtil.exe /u "......\WindowsService1.exe"
    

可以继续扩展的地方

本来想简单扩展一个关机邮件,但是发现并没有那么简单。虽然可以覆写OnShutdown()OnStop()两个函数,但是最终都没有起到理想中的作用。因为我对这个需求不高,如果有需求的话可以继续研究。

你可能感兴趣的:(设定电脑在开机后自动发送一封邮件)