sendmail-命令行发邮件利器

前段时间公司的一个项目刚刚上线,为了每天都能够查看系统中昨天出现的问题等各种关键信息,开发人员每天都远程登陆系统拿到产生的系统日志等其他文件,由于远程登陆还需要VPN,使用起来相当繁琐,并且效率不高,为此花掉的时间也挺多的.想了一想如何解决这个问题,得出的结论这种重复无意义的事情还是交给计算机做比较合适,于是花了周末的一个下午的时间使用Java编写了支持在命令行发送邮件的jar包,然后通过bat脚本调用制作为windows的计划任务(Scheduler,
注:系统部署在windows server之上)

在linux命令行中也有一个名为sendmail的程序可以支持命令行发送邮件,这里我也无耻的沿用这个名字.本文主要简单介绍一下该程序的使用方法,我相信可能会有朋友需要这个.

既然是jar包,运行时自然要使用java环境,先看帮助文档:

在命令行中敲入如下命令:

java -jar sendmail.jar -help

好了,既然看了帮助文档那么我们就先按照帮助文档的example来发送一份邮件到我们各自的邮箱里面,在命令行输入以下命令:

java -jar sendmail.jar -t [email protected] -s "HelloSendMail" -b "Hi,shawyeok: This is first email from command line!"

当发送成功时命令行会打印出如下信息:

sendmail to [[email protected]] success

通过以上的命令我发送一封邮件到[email protected]这个邮箱里面,这是我的个人邮箱,如果大家在使用过程中发现了BUG请用这个邮箱和我联系,谢谢.下面我登陆到我的邮箱里面发现邮件的确已经收到了.

通过上面的帮助文档和练习我们可以看到默认情况下该程序的发送者为[email protected],这是本人为了供大家使用方便添加的默认用户,倘若你要使用该程序发送一些较为私密的信息,本人还是建议您修改一下,修改起来很简单,使用WinRAR或7Zip等压缩软件打开sendmail.jar,修改其中根目录下的default.properties文件的几个属性即可,修改方法如下图所示

上面的有一点需要注意,就是hostnameport那里,每个email服务商的地址都不一样,如果你不太清楚该写成什么,可以在网上搜索一下你的email服务商的SMTP服务器地址,当然也可以单独申请一个163邮箱,这样一来hostname和port这里保持不变就可以了.

上面大致介绍了怎么样使用这个程序,但离实际应用还有一定距离,下面我就演示一下我在工作中对该程序的实际应用情况.

在本文开始处我已经对我们的应用情况作了简单描述,我们需要每天审查服务器产生的日志信息,于是编写了一个bat脚本,内容如下:

@ECHO off

IF "%JAVA_HOME%" == "" GOTO SETCMDPATH

IF NOT "%JAVA_HOME%" == "" GOTO SETSENDMAILPATH

:SETCMDPATH

SET JAVA_HOME="C:\Program Files\Java\jdk1.7.0_51"

:SETSENDMAILPATH

SET SENDMAIL_PATH="C:\Users\Shawyeok\Desktop\sendmail.jar"

:EXECUTE

"%JAVA_HOME%\bin\java.exe" -jar "%SENDMAIL_PATH%" -t "[email protected]" -s "WAS LOG REPORT" -a "D:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\logs" -b "This is Today WAS LOG! CTREAT BY SHAWYEOK!"

这里的脚本非常简单,首先检查了系统是否设置了JAVA_HOME环境变量,然后将sendmail的全路径设置为一个变量,这样一来调用就非常方便了,在EXECUTE中,我将"D:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\logs"这个文件夹作为附件添加到该邮件中了,该程序会自动将该文件夹压缩(目前仅支持zip压缩方式)为一个zip包.

好了,现在执行脚本也有了,我们怎么让其自动运行呢?windows系统中有Task Scheduler(计划任务),在控制面板 > 高级管理工具中可以打开该工具,下面要做的就是设置一个定时任务就行了,设置好触发器和执行动作就行,非常简单.

上面的截图来自我的邮箱, 这样一来, 就省去了很多时间, 就像每天机器把自己的工作内容汇报上来一样, 感觉是不是挺好呢! 快试试吧.

sendmail下载地址: http://pan.baidu.com/s/1pJlwWAJ

sendmail源码已托管在GitHub上: https://github.com/Shawyeok/sendmail

注:当您遇到BUG时,就是我能够改善程序的好机会,请与我联系([email protected]),或者直接提交补丁到GitHub上也是不错的选择.

时间: 2024-10-11 20:59:13

sendmail-命令行发邮件利器的相关文章

邮件开发(二)命令行发邮件

1.打开命令行,输入指令:telnet smtp.qq.com 587 这儿的服务器地址和端口是上面提到的,但是465端口似乎用不了,这儿使用587端口. 2.回车后出现以下界面: 3.向服务器表明身份: 1.输入:ehlo zby 2.回显250状态码 3.zby可以任意替换,这儿是我姓名简写. 4.输入命令:starttls 5.输入:auth login 6.看到334返回码,开始邮箱验证,输入邮箱的base64编码(运行之前的工具类得到): 7.看到334返回码,开始授权码验证,是授权码

Mac下命令行发邮件【搭配php(shell_exec...)等脚本语言,轻松发邮件,告别各种依赖库】

用到的是msmtp,一个smtp客户端,比sendmail,postfix更加轻量.用自己的QQ邮箱(163...)发邮件的话,很适合. Mac下安装很简单,一句话:brew install msmtp 另外需要配置两个文件: ~/.mailrc: ~/.msmtp: 正式发送: 收到洛: PHP发送的话,用shell_exec之类的函数,就不用多说啦,命令当然支持更多的参数,详细可参考相关文档或者Terminal输msmtp --help查看.

利用命令行发邮件

1.与SMTP服务器建立连接 c:\> telnet xxx.xxx.xxx.xxx 25 220 xxxxxxxxxx ESMTP Sendmail EHLO localhost 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH PLAIN LOGIN 250-DELIVERBY 250 HELP 2.  AUTH PLAIN认证 基于明文的SMTP验证,详见:http://www.ietf.org/

macOS下用命令行发邮件

brew install msmtp vi ~/.mailrc set sendmail=/usr/local/bin/msmtp wq! vi ~/.msmtprc # Use an external SMTP server with insecure authentication. # (manually choose an insecure authentication method.) # Note that the password contains blanks. defaults

命令行中邮件的收发

1.telnet smtp.aliyun.com 25//cmd命令下:使用Telnet工具连上某个邮箱服务的smtp服务器,如阿里云2.helo hi//和smtp服务器打招呼,hi可以随时填其他英文字符3.auth login//开始身份认证4.邮箱的base64编码字符串,发送发的邮箱用echo base64_encode("[email protected]").'<br/>'来获 得;//bWZoZ2psMDcyMTAwOEBhbGl5dW4uY29t5.邮箱密码

图解Telnet命令和命令行看邮件

1 打开telnet 2 开启本地回显 3 telnet 百度.新浪 连不上,下次再搞: 4 telnet 本地 搞不定,下次再搞: 5 看新浪邮件 连接到pop3邮件服务器了: 照下图输入用户名和密码: 因为我的新浪邮箱长期不用已被冻结,故打不开: 6 看搜狐邮件 用用户名和口令登录,成功: 用list命令列出邮件,2000多封: 查看第10封邮件内容:retr 10: 参考: http://blog.sina.com.cn/s/blog_5ee19fd80100w3b6.html

linux如何发邮件

作为linux系统管理员,我们会偶尔使用mail命令进行发邮件. 我主要是利用mail监控主机及时报警. 步骤: 查看系统是否安装mail whereis mail ###一般都在/etc/mail.rc 2.如果没安装直接yum install sendmail* 然后重新启动sendmail服务: service sendmail restart 3.设置客户端  修改配置文件 设置mail使用代理发邮件 在/etc/mail.rc最后添加两行 set [email protected] s

Nagios 配置自动发邮件功能

安装sendmailyum install -y sendmail* 修改防火墙设置,添加25端口到防火墙vi /etc/sysconfig/iptables 重启 iptables.sendmail 服务service iptables restartservice sendmail restart 测试发邮件功能是否正常echo "Nagios Test Email " | mail -s "Alert" [email protected]此时163邮箱会收到一

【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握

内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:"小编,你为什么每次都要起这么非主流的标题呢?不能愉快地玩耍么?" 小编:"那我问你,老子他为什么要写<道德经>咧?" 读者:"为什么咧?" 小编:"因为老子愿意!" 开个小玩笑轻松一下 O(∩_∩)O~ 没办法,不能不激动,因为我们终于来到了这一刻,