1. 程式人生 > >sendmail-命令列發郵件利器

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(計劃任務),在控制面板 > 高階管理工具中可以開啟該工具,下面要做的就是設定一個定時任務就行了,設定好觸發器和執行動作就行,非常簡單.


上面的截圖來自我的郵箱, 這樣一來, 就省去了很多時間, 就像每天機器把自己的工作內容彙報上來一樣, 感覺是不是挺好呢! 快試試吧.

注:當您遇到BUG時,就是我能夠改善程式的好機會,請與我聯絡([email protected]),或者直接提交補丁到GitHub上也是不錯的選擇.