【问题标题】:How to block java application from sending email during development?如何阻止Java应用程序在开发过程中发送电子邮件?
【发布时间】:2016-05-09 13:35:19
【问题描述】:

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

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

【问题讨论】:

  • 给它另一个 smtp 服务器?一个……什么都没有。那会是一个选择吗?还是硬编码?
  • 现在是硬编码的。

标签: java email smtp development-environment


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果 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
    

    【讨论】:

      猜你喜欢
      • 2015-07-31
      • 2016-11-21
      • 2010-12-27
      • 2018-05-10
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多