设为首页 收藏本站
查看: 1460|回复: 0

[经验分享] sendmail-命令行发邮件利器

[复制链接]

尚未签到

发表于 2015-11-25 10:25:27 | 显示全部楼层 |阅读模式
  前段时间公司的一个项目刚刚上线,为了每天都能够查看系统中昨天出现的问题等各种关键信息,开发人员每天都远程登陆系统拿到产生的系统日志等其他文件,由于远程登陆还需要VPN,使用起来相当繁琐,并且效率不高,为此花掉的时间也挺多的.想了一想如何解决这个问题,得出的结论这种重复无意义的事情还是交给计算机做比较合适,于是花了周末的一个下午的时间使用Java编写了支持在命令行发送邮件的jar包,然后通过bat脚本调用制作为windows的计划任务(Scheduler,注:系统部署在windows server之上)
  在linux命令行中也有一个名为sendmail的程序可以支持命令行发送邮件,这里我也无耻的沿用这个名字.本文主要简单介绍一下该程序的使用方法,我相信可能会有朋友需要这个.
  既然是jar包,运行时自然要使用java环境,先看帮助文档:
  在命令行中敲入如下命令:
  java -jar sendmail.jar -help
DSC0000.jpg

  好了,既然看了帮助文档那么我们就先按照帮助文档的example来发送一份邮件到我们各自的邮箱里面,在命令行输入以下命令:
  java -jar sendmail.jar -t kmter@live.com -s "HelloSendMail" -b "Hi,shawyeok: This is first email from command line!"
  当发送成功时命令行会打印出如下信息:
  sendmail to [kmter@live.com] success
  通过以上的命令我发送一封邮件到kmter@live.com这个邮箱里面,这是我的个人邮箱,如果大家在使用过程中发现了BUG请用这个邮箱和我联系,谢谢.下面我登陆到我的邮箱里面发现邮件的确已经收到了.
DSC0001.jpg

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

  上面的有一点需要注意,就是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 "kmter@live.com" -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(计划任务),在控制面板 > 高级管理工具中可以打开该工具,下面要做的就是设置一个定时任务就行了,设置好触发器和执行动作就行,非常简单.
DSC0003.jpg

  上面的截图来自我的邮箱, 这样一来, 就省去了很多时间, 就像每天机器把自己的工作内容汇报上来一样, 感觉是不是挺好呢! 快试试吧.
  sendmail下载地址: http://pan.baidu.com/s/1pJlwWAJ
  sendmail源码已托管在GitHub上: https://github.com/Shawyeok/sendmail
  注:当您遇到BUG时,就是我能够改善程序的好机会,请与我联系(kmter@live.com),或者直接提交补丁到GitHub上也是不错的选择.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143313-1-1.html 上篇帖子: sendmail 维护记录 下篇帖子: crond-sendmail-postdrop导致Linux定期死掉的完整解决过程实录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表