我的應用程序發送一些電子郵件給我們的客戶,在我們處理他們的文件時向他們發出一些錯誤警告。但是,我想禁用此功能,而不更改我的代碼,用於開發/測試目的。如何阻止Java應用程序在開發過程中發送電子郵件?
是否有任何參數傳遞給我的JVM,以阻止它發送電子郵件?
我的應用程序發送一些電子郵件給我們的客戶,在我們處理他們的文件時向他們發出一些錯誤警告。但是,我想禁用此功能,而不更改我的代碼,用於開發/測試目的。如何阻止Java應用程序在開發過程中發送電子郵件?
是否有任何參數傳遞給我的JVM,以阻止它發送電子郵件?
如果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
您只需通過添加一個罐子到類路徑替換one that "mocks" a real provider,了JavaMail提供商。除阻止出站郵件外,它還允許您對應用程序的電子郵件功能執行單元測試。 This library由Hudson/Jenkins的創始人Kohsuke Kawaguchi創建。
這絕對是最好的答案,thx分享 –
給它另一個smtp服務器?一個沒有......沒有。這是一個選擇嗎?或者它是硬編碼的? – Fildor
現在是硬編碼。 –