上篇中有提到要实现发送邮件功能,且发送邮件是当监控软件发现异常时调用restartServer.bat文件来执行指定命令而实现的发送操作。在选择实现时该功能时我首先想到了命令行发邮件的一个不错的工具Blat,使用该工具实现发邮件非常简单,现做简要介绍。 一、实现blat发送邮件 下载blat可以去官网:http://www.blat.net/ 当然你也可以去网上百度下,也会有大把下载资源。 下载之后解压找到如下图几个文件,把它们放到C:\WINDOWS\system32下面,这样做为了方便通过命令行直接调用。
放到指定路径后打开一个命令行窗口,输入blat会输出如下信息,说明blat可以使用了。
下面就使用blat来发邮件了,首先是一个批处理: sendmail.bat:
@echo off :::::::::::::: 参数设置:::::::::::::: set from=test@163.com【发送方地址】 set user=test【发送方账号】 set pass=testpwd【发送方密码】 set tf=mail_list.txt【收件人列表】 set subj=这是邮件标题哈【邮件标题】 set mail=mail_body.txt【邮件内容】 set attach=c:\sendmail\fj.txt【邮件附件】 set server=smtp.163.com【发送服务器】 set debug=-debug -log blat.log -timestamp【日志】 ::::::::::::::: 执行blat ::::::::::::::: blat %mail% -tf %tf% -base64 -charset UTF8 -subject %subj% -attach "%attach%" -server % server% -f %from% -u %user% -pw %pass% %debug%mail_list.txt:
2831000205@qq.com 88888@qq.com
mail_body.txt: This email come from test@163.com,Congratulations!
fj.txt:
i am fj! 测试中文
注意事项:1、使用的邮箱要支持smtp,像163默认是没有开启smtp的,需要去配置中开启下。 2、发送方地址和发送方账号注意区分开来,发送方账号一定不要带形如:“@163.com“的后缀,否则将报登录失败的错误。 3、上面的邮箱地址密码都是我随意写的,实际使用时请使用正确的邮箱和密码等信息。
完成以上信息的配置后双击sendmail.bat,如果没有报出错误信息,那就可以看下你的收件箱了,应该已收到刚才发送的邮件了。 二、用VBS脚本发送邮件 现在通过blat发邮件是没问题的,但测试时发现通过上文介绍的Tomcatmoni监控助手无法调用sendmail.bat这个文件,调用后不能正常执行,但如果把这个bat文件换成其它命令就可以正常执行。后来尝试了好久还是没能实现通过TomcatMoni监控助手调用sendmail.bat正常发送邮件。但自己手动双击sendmail.bat确实可以发送邮件。于是又找到了接下来要介绍的第二种发送邮件的方式,通过vbs脚本来发送,样例如下: sendmail.vbs
NameSpace = "http://schemas.microsoft.com/cdo/configuration/" set Email = CreateObject("CDO.Message") Email.From = "sendtest@163.com" 【发送方地址】 Email.To = "receive@163.com" 【接收方地址】 Email.Subject = "这是邮件标题"【邮件标题】 x="C:\TomcatMonitor\sendmail\mail_body.txt" 【邮件正文】 y="C:\TomcatMonitor\sendmail\fj.txt"【附件】 Set fso=CreateObject("Scripting.FileSystemObject") Set myfile=fso.OpenTextFile(x,1,Ture) c=myfile.readall myfile.Close Email.Textbody = c Email.AddAttachment y with Email.Configuration.Fields .Item(NameSpace&"sendusing") = 2 .Item(NameSpace&"smtpserver") = "smtp.163.com"【邮件服务器地址】 .Item(NameSpace&"smtpserverport") = 25 .Item(NameSpace&"smtpauthenticate") = 1 .Item(NameSpace&"sendusername") = "sendtest" 【发送方账号】 .Item(NameSpace&"sendpassword") = ""sendtestpwd" 【密码】 .Update end with Email.Send Set Email=Nothing
双击该vbs脚本可以直接发送邮件,在批处理中调用的样例如下: restartServer.bat:
@rem 这里可以写您自己需要执行的命令 @rem 重启tomcat的命令 @rem 发出邮件通知 wscript C:\TomcatMonitor\sendmail\sendmail.vbs
修改TomcatMoni监控助手的conf.properties文件,把服务器异常时调用的启动命令设置为该批处理文件,当服务器异常时你就可以收到邮件了。当然如果你的邮箱开通了邮件通知服务(如:139邮箱)就可以实时收到短信通知了。
好了,今天就先介绍到这里,后续会继续完善其它需求。 |