如何阻止java应用程序在开发过程中发送电子邮件?

时间:2016-05-09 13:35:19

标签: java email smtp development-environment

我的应用程序会向客户发送一些电子邮件,以便在我们处理文件时向他们发出警告。但是,我想禁用此功能而不更改我的代码,以用于开发/测试目的。

是否有任何参数传递给我的JVM以阻止它发送电子邮件?

2 个答案:

答案 0 :(得分:2)

只需在类路径中添加jar,就可以用one that "mocks" a real provider,替换JavaMail提供程序。除了阻止出站邮件外,它还允许您对应用程序的电子邮件功能执行单元测试。 This library由Hudson / Jenkins的创建者Kohsuke Kawaguchi创建。

答案 1 :(得分: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