CMD Telnet 命令行自动发送邮件脚本

本文介绍如何使用简单的命令行工具监控 SQL Server 的服务状态,并通过编写批处理脚本自动发送邮件通知,适用于 Windows 环境下的自动化运维场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定期监控sql server服务运行状态,如服务停止,则启动它?
这个比较简单的方法可以实现 
net start 服务名称
放到windows的定时执行中就好了
如果服务已经启动则报 服务已经启动

以下是监控服务,并发送邮件

 

首先简单介绍一下SMTP
SMTP基本命令集:
命令 描述 
HELO 向服务器标识用户身份
MAIL 初始化邮件传输 mail from:
RCPT 标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt to:
DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束
QUIT 结束会话
MAIL FROM命令中指定的地址是称作envelope from地址,不需要和发送者自己的地址是一致的
RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:行是什么无关

C:/>telnet smtp.163.com 25    //登陆 smtp.163.com 端口号为 25

220 163.com Anti-spam GT for Coremail System(163com[071018])
 
HELO localhost  // 与服务器打招呼,并告知客户端使用的机器名字,可以随便填写
250 OK  
AUTH LOGIN     //使用身份认证登陆指令
334 dXNlcm5hbWU6
cmVkc25zMw==  //输入已经base64_encode()过的用户名,只输入用户名,不需要带@163.com

//在线加密网址 http://www.base64online.com/
334 UGFzc3dvcmQ6
MbM2MMQ35Q==  //输入已经base64_encode()过的密码
235 Authentication successful
MAIL FROM:<rain@163.com>  //告诉服务器发信人的地址,必须和前面输入的用户名一致。
250 Mail OK
RCPT TO:<rain@163.com> //告诉服务器收信人的地址
250 Mail OK
DATA   //正面开始传输信件的内容,且最后要以只含有 . 的特殊行结束。
354 End data with .
To:rain@163.com 
From:rain@163.com
Subject:test mail
From:rain@163.com
test body
123
. //结束传输信件
250 Mail OK queued as smtp14,F0CPBFsuzUOvoDwE.41582S2
QUIT  //断开连接
221 Bye
Connection closed by foreign host.
状态码说明:
220 : 服务就绪
250 :请求邮件动作正确,完成(HELO,MAIL FROM,RCPT TO,QUIT 指令执行成功会返回此信息)
235 :认证通过
221 :正在处理
354 :开始发送数据,结束以 .(DATA指令执行成功会返回此信息)
500 :语法错误,命令不能识别
550 :命令不能执行,邮箱无效
552 :中断处理:用户超出文件空间

 

——————————————————————————–

 

以163邮箱为例,利用.bat文件自动调用telnet发送邮件!

 

——————————————————————————–

 

 

 

       

 

依据上述原理,接下来我们就来个bat自动发送邮件,而不用一行行手动输入命令!!!代码如下:

 

echo set sh=WScript.CreateObject(“WScript.Shell”) >telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

echo sh.SendKeys “open smtp.163.com 25{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 1000 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “helo abc{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “auth login{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “!!youUserName!!{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “!!youPassWord!!{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “mail from:<XXXXX@163.com>{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “rcpt to:<XXXXX@163.com>{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “data{ENTER}” >>telnet_tmp.vbs

 

echo WScript.Sleep 300 >>telnet_tmp.vbs

 

 

 

echo sh.SendKeys “subject:!!!邮件主题!!!!{ENTER}{ENTER}” >>telnet_tmp.vbs

 

echo sh.SendKeys “!!!邮件内容!!!!{ENTER}” >>telnet_tmp.vbs

 

echo sh.SendKeys “.{ENTER}” >>telnet_tmp.vbs

 

 

 

start telnet

 

cscript //nologo telnet_tmp.vbs

 

del telnet_tmp.vbs

 

//代码拷贝“”可以存在语法错误,请替换成英文下的 ""

 

可以使用 `Blat` 这款开源命令行工具通过 SMTP 模式发送邮件。它支持多种参数配置,能够满足基本的邮件发送需求。 ### 使用 Blat 发送邮件的基本语法 ```cmd Blat -body "邮件内容" -s "邮件主题" -t 收件人邮箱 -server SMTP服务器地址 -f 发件人邮箱 -u 登录用户名 -pw 登录密码 ``` 例如,使用 QQ 邮箱发送一封测试邮件: ```cmd Blat -body "test mail" -s "测试test" -t nn1183@qq.com -server smtp.qq.com -f 442624872@qq.com -u 442624872@qq.com -pw lcgcaflcjewvb ``` 此命令会以指定的发件人身份登录到 `smtp.qq.com` 并发送一封包含文本“test mail”的邮件[^1]。 ### 使用附件发送邮件 若需要附带文件,可添加 `-attach` 参数并指定文件路径: ```cmd Blat C:/mail.txt -to demo@demo.com -attach "C:/fujia.txt" -s "zhuti" -u user@163.com -pw password -charset Gb2312 ``` 该命令将 `C:/mail.txt` 内容作为邮件正文,并附加了 `C:/fujia.txt` 文件发送给收件人 `demo@demo.com` [^2]。 ### 注意事项 - **安全性**:由于某些杀毒软件如 360 安全卫士可能会误判为病毒,请确保将 Blat 工具放置于信任目录中运行。 - **部署位置**:不建议将其安装在系统目录(如 `%WINDIR%\System32`)或修改环境变量以便全局调用;推荐与编写脚本放在同一目录下使用。 - **编码问题**:如果涉及非英文字符集,可以通过 `-charset` 参数指定编码方式,比如 GBK 或 UTF-8 等。 ### 其他方法 除了 Blat 外,还可以尝试直接使用 Telnet 协议手动连接至 SMTP 服务器进行邮件发送操作。这种方式较为复杂且需要了解 SMTP 协议交互过程,包括建立连接、认证以及数据传输等步骤。具体流程如下: 1. 打开 CMD 并输入 `telnet smtp.qq.com 25` 来连接目标 SMTP 服务器。 2. 输入 `auth login` 后按回车键开始认证流程。 3. 根据提示依次提供经过 Base64 编码处理后的用户名和密码完成登录。 4. 接下来按照标准 SMTP 命令格式继续执行后续动作直至成功提交邮件内容[^4]。 总之,无论选择哪种方案都应充分考虑安全性和便捷性之间的平衡点,并根据实际应用场景灵活选用最适合的技术手段。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值