热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sendmail-命令行发邮件利器

前段时间公司的一个项目刚刚上线,为了每天都能够查看系统中昨天出现的问题等各种关键信息,开发人员每天都远程登陆系统拿到产生的系统日志等其他文件,由于远程登陆还需要VPN,使用起来相当繁琐,并且效率

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

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

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

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

java -jar sendmail.jar -help


好了,既然看了帮助文档那么我们就先按照帮助文档的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请用这个邮箱和我联系,谢谢.下面我登陆到我的邮箱里面发现邮件的确已经收到了.


通过上面的帮助文档和练习我们可以看到默认情况下该程序的发送者为sendmailcmd@163.com,这是本人为了供大家使用方便添加的默认用户,倘若你要使用该程序发送一些较为私密的信息,本人还是建议您修改一下,修改起来很简单,使用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 "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(计划任务),在控制面板 > 高级管理工具中可以打开该工具,下面要做的就是设置一个定时任务就行了,设置好触发器和执行动作就行,非常简单.


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

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

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

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


推荐阅读
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
author-avatar
丰日2012_102
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有