Windows计划任务+sendEmail实现系统启动邮件提醒

由于实验室线路的问题,经常跳闸断电,通电后虽然服务器可以自动开机,但是包括vcenter在内的所有虚拟机都会down掉,为了能够及时的知晓服务器断电,昨天想了个一个办法。就是从从控制机pc入手,首先设置bios将电脑设置为通电自启,然后启动后给我的邮箱发送邮件,这样就能够在服务器重启之后及时的恢复服务。

sendEmail

工具下载

sendemail是一个用来发送邮件的命令行工具,极其轻量和方便。
首先到sendemail的官网下载sendEmail压缩包,Windows有两个版本,一个是包含tls验证,一个没有,这里我们下载有tls验证的版本。
01.png

测试sendEmail能否正常使用

将下载下来的压缩包解压到自己想要的目录中,然后用cmd定位到此目录。
02.png
然后根据官网的语法说明即可编写相应的命令,这里我们用官网给出的模板直接进行修改:

sendEmail -o tls=yes -f YourEmail@gmail.com -t SomeoneYoureEmailing@domain.com -s smtp.gmail.com:587 -xu YourEmail@gmail.com -xp YOURPASSWORD -u "Hello from sendEmail" -m "How are you? I'm testing sendEmail from the command line."

例子中的说明:

-f YourEmail@gmail.com #发件人邮箱
-t SomeoneYoureEmailing@domain.com #收件人邮箱
-s smtp.gmail.com:587 #发件人邮箱的smtp服务器
-xu YourEmail@gmail.com #用户名
-xp YOURPASSWORD #密码
-u "Hello from sendEmail" #邮件的标题
-m "How are ... line." #邮件的内容

要注意的是发件人邮箱首先要开启stmp服务,如果密码中包含特殊字符,请用双引号包裹一下。
03.png
正确的修改之后直接回车,看到successfully就说明发送成功了,如果这时候你并没有在邮箱中收到邮件,那么建议你去垃圾箱看一下。

将命令保存为bat并调用vps执行

为了能让Windows计划任务可以执行,我们将以上的cmd命令写成批处理命令,然后通过vbs调用这个bat,这样就可以将bat的运行过程隐藏了。

编辑bat

新建一个记事本文件,将要在cmd中执行的命令写进去:

@echo off
ping 172.0.0.1 -n 100 #延时执行
f:
cd sendEmail-156
sendEmail -o tls=yes -f YourEmail@gmail.com -t SomeoneYoureEmailing@domain.com -s smtp.gmail.com:587 -xu YourEmail@gmail.com -xp YOURPASSWORD -u "Hello from sendEmail" -m "How are you? I'm testing sendEmail from the command line."

写完之后将记事本的txt格式改为bat,双击执行一下检查是否可以正常收到邮件。我在开头加入一条ping命令是为了延时执行,因为在通电之后并不能立马恢复网络,所以让它在发送100个包之后再去执行下面的命令,这个可根据情况自己选择。

编辑vbs

同样新建一个记事本文件,将以下命令复制进去:

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "d:\sendEmail-156\sendemail.bat",0

然后另存为vbs文件。

添加Windows计划任务

win+r然后输入taskschd.msc打开Windows计划任务。

创建任务

04.png

输入任务名称配置改为自己的系统

05.png
不要接着点确定,点上面的触发器。

设置触发条件

06.png

新建操作

07.png
程序选择刚刚写的那个vbs文件,其它设置可以根据情况自己把握。

这样,就可以在系统启动时收到一封邮件提醒了。
感谢您的访问,如果你有什么好的建议或想法,欢迎与我联系:

email:666@cyne.cf
QQ:1543740487