使用Blat发邮件

定时发送邮件相信很多人都遇到过,比如说每天7点整,要把前24小时在网站上产生的数据提交给相应的部门做后期处理。今天我们来介绍一款“短小精悍”的小工具——Blat,来实现这个功能!
What is Blat?
Blat is a Windows (32 & 64 bit) command line utility that sends eMail using SMTP or post to usenet using NNTP.

首先要下载Blat:https://sourceforge.net/projects/blat/files/
下载后解压缩,cmd进入到当前目录下,敲入如下命令(以163邮箱为例):
blat -install smtp.163.com admin@163.com
然后就可以发邮件了,先在当前目录下新建body.txt,在里面写入邮件正文,然后敲入如下命令:
blat body.txt -to a@163.com,b@163.com -u admin@163.com -pw 123 -subject 主题 -attach D:\PushJobLog\msg_separate\Message.txt
很明显,-to后面是邮件接受者,多个对象以“,”隔开,-u是发送者,-pw是发送者的密码,-subject是邮件主题,-attach是附件

以上,就完成了邮件发送的功能,但好像还没实现“定时”,分明是手动执行命令来的嘛,摔!
不要方,我们现在把命令写到一个bat文件中:
@echo off
blat -install smtp.163.com admin@163.com
blat body.txt -to a@163.com,b@163.com -u admin@163.com -pw 123 -subject 主题 -attach D:\PushJobLog\msg_separate\Message.txt
pause
我们把这个bat文件命名为sm.bat,也放到当前目录下,然后用windows的计划任务去定时执行这个bat,这里注意下需要在“起始于”那一栏写上路径:
《使用Blat发邮件》

以上,就可以实现定时发送的任务啦,记得在计划任务执行前更新body.txt和Message.txt哦。

但是,每天更新body.txt或者Message.txt,那么之前的内容就被覆盖掉了,怎样能够保存下来呢,其实按道理数据库里应该有以往的发送内容的存档,这边简单介绍几个bat,通过bat来实现备份和打包以及删除。

以发送txt附件为例,假设每天23时59分59秒,程序会生成一个Message.txt在D:\PushJobLog下,我们只要在sm.bat中@echo off下面加上:
set “Ymd=%date:~,4%%date:~5,2%%date:~8,2%”
move D:\PushJobLog\Message.txt D:\PushJobLog\msg_separate\%ymd%.txt
然后再执行blat发送命令,这样每天都会有一个以日期命名的txt,并且将这个txt发送出去。

时间长了,日子久了,msg_separate这个文件下就会有越来越多的txt,这时候我想把它们压缩打包,对于那些时间炒鸡久的我们甚至需要删除。
压缩打包的话我们要借助于WinRAR,新建一个bat文件,命令如下:
“C:\Program Files\WinRAR\WinRAR.exe” a -df -agYYYYMMDDHHMM D:\Backup\msg_ D:\PushJobLog\msg_separate*.txt
这个任务会将msg_separate文件夹下所有txt格式的文件打包到D:\Backup下,并以msg_201701101700.rar这种格式命名。(”C:\Program Files\WinRAR\WinRAR.exe”是WinRAR的安装路径)

删除的话,同样新建一个bat,命令如下:
set SrcDir=D:\Backup
set DaysAgo=30
forfiles /p %SrcDir% /s /m *.rar /d -%DaysAgo% /c “cmd /c del /f /q /a @path”
这个任务会将D:\Backup下所有30天前的rar文件删除。

    原文作者:leebin_20
    原文地址: https://blog.csdn.net/leebin_20/article/details/69951523
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞