2016-05-09 20 views
1

我的應用程序發送一些電子郵件給我們的客戶,在我們處理他們的文件時向他們發出一些錯誤警告。但是,我想禁用此功能,而不更改我的代碼,用於開發/測試目的。如何阻止Java應用程序在開發過程中發送電子郵件?

是否有任何參數傳遞給我的JVM,以阻止它發送電子郵件?

+0

給它另一個smtp服務器?一個沒有......沒有。這是一個選擇嗎?或者它是硬編碼的? – Fildor

+0

現在是硬編碼。 –

回答

1

如果SMTP服務器的主機名在代碼中硬編碼,例如:

server = "smtp.example.com" 

你可以改變在/ etc/hosts中的主機文件覆蓋DNS查找。將此添加到您的主機文件中:

127.0.0.1 smtp.example.com 

這會阻止您的程序與郵件服務器進行交互。確保在完成後刪除該行。

否則,如果IP地址是硬編碼的,可以使用防火牆。確切的過程將取決於您使用的操作系統。如果您正在運行的Linux內核的操作系統,你可以使用iptables的阻止IP地址:

iptables -I OUTPUT 1 --destination 1.2.3.4 -j REJECT 

或者,更具體的規則:

iptables -I OUTPUT 1 --destination 1.2.3.4 -p tcp --dport 25 -j REJECT --reject-with tcp-reset 

再次,記得改回當你做:

iptables -D OUTPUT 1 
2

您只需通過添加一個罐子到類路徑替換one that "mocks" a real provider,了JavaMail提供商。除阻止出站郵件外,它還允許您對應用程序的電子郵件功能執行單元測試。 This library由Hudson/Jenkins的創始人Kohsuke Kawaguchi創建。

+1

這絕對是最好的答案,thx分享 –

相關問題