热门标签 | 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上也是不错的选择.


推荐阅读
  • 本文介绍了如何在 macOS 上安装 HL-340 USB 转串口驱动,并提供了详细的步骤和注意事项。包括下载驱动、关闭系统完整性保护、安装驱动以及验证安装的方法。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • Spring 切面配置中的切点表达式详解
    本文介绍了如何在Spring框架中使用AspectJ风格的切面配置,详细解释了切点表达式的语法和常见示例,帮助开发者更好地理解和应用Spring AOP。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
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社区 版权所有