如何在开发过程中阻止 java 应用程序发送电子邮件?
How to block java application from sending email during development?
我的应用程序会向我们的客户发送一些电子邮件,以在我们处理他们的文件时警告他们一些错误。但是,出于 development/test 目的,我想禁用此功能,而不更改我的代码。
是否有任何参数可以传递给我的 JVM 以阻止它发送电子邮件?
如果 SMTP 服务器的主机名在代码中被硬编码,例如:
server = "smtp.example.com"
您可以更改 /etc/hosts 处的主机文件以覆盖 DNS 查找。将此添加到您的主机文件:
127.0.0.1 smtp.example.com
这将阻止您的程序与邮件服务器交互。确保在完成后删除该行。
否则,如果 IP 地址是硬编码的,则可以使用防火墙。具体步骤取决于您使用的操作系统。如果你是 运行 一个 OS 和 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
您可以将 JavaMail 提供程序替换为 one that "mocks" a real provider, just by adding a jar to your classpath. In addition to blocking outbound mail, it allows you to perform unit testing on your application's email functions. This library 由 Hudson/Jenkins 的创建者 Kohsuke Kawaguchi 创建。
我的应用程序会向我们的客户发送一些电子邮件,以在我们处理他们的文件时警告他们一些错误。但是,出于 development/test 目的,我想禁用此功能,而不更改我的代码。
是否有任何参数可以传递给我的 JVM 以阻止它发送电子邮件?
如果 SMTP 服务器的主机名在代码中被硬编码,例如:
server = "smtp.example.com"
您可以更改 /etc/hosts 处的主机文件以覆盖 DNS 查找。将此添加到您的主机文件:
127.0.0.1 smtp.example.com
这将阻止您的程序与邮件服务器交互。确保在完成后删除该行。
否则,如果 IP 地址是硬编码的,则可以使用防火墙。具体步骤取决于您使用的操作系统。如果你是 运行 一个 OS 和 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
您可以将 JavaMail 提供程序替换为 one that "mocks" a real provider, just by adding a jar to your classpath. In addition to blocking outbound mail, it allows you to perform unit testing on your application's email functions. This library 由 Hudson/Jenkins 的创建者 Kohsuke Kawaguchi 创建。