我的应用程序会向客户发送一些电子邮件,以便在我们处理文件时向他们发出警告。但是,我想禁用此功能而不更改我的代码,以用于开发/测试目的。
是否有任何参数传递给我的JVM以阻止它发送电子邮件?
答案 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