gpt4 book ai didi

JavaMail 和 IP4 与 IP6

转载 作者:太空宇宙 更新时间:2023-11-04 15:22:24 25 4
gpt4 key购买 nike

我正在通过 JavaMail 将邮件发送到本地主机端口 25 上的邮件服务器。我的邮件服务器仅绑定(bind)到 IP4,即它绑定(bind)到 127.0.0.1:25,但不绑定(bind)到 [::]:25

对于 JavaMail 2.5.1 和 JDK 1.7.0_45,只有设置系统属性 java.net.preferIPv4Stack=true 才能使其正常工作。

问题:

  1. 为什么需要设置系统属性?我的意思是为什么不是在 JavaMail 中将我的目标主机设置为 127.0.0.1 就足够了比localhost。我假设使用显式 IP4 地址足以告诉 Java 我想使用 IP4连接?

  2. 好吧,假设我确实需要该系统属性。我在 J2EE 中服务器和我真的不想打扰其他租户相同的 J2EE 服务器。如果我在代码中以编程方式设置它,如System.setProperty("java.net.preferIPv4Stack","true") 是否会影响 J2EE 服务器中的其他租户?

  3. 我真正想做的是确保只有 SMTP 连接使用 IP4。在应用程序中,有许多与 SMTP 无关的其他 TCP 连接正在进行。我不想限制它们仅使用 IP4。有什么办法可以实现这个目标吗?

谢谢。

最佳答案

我会回答我自己的问题。

问题是使用属性 mail.smtp.host=127.0.0.1 并不会像我预期的那样强制使用 IP4。

诀窍是同时使用属性mail.smtp.localaddress=127.0.0.1。这会将传出套接字绑定(bind)到该本地地址,从而使其成为 IP4。

JavaMail 中 SMTP 连接的属性记录在 here .

我假设这个问题也可以通过创建一个自定义的SocketFactory类来解决,然后让JavaMail知道这个类应该通过mail.smtp.socketFactory来使用.class 属性。

关于JavaMail 和 IP4 与 IP6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20281411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com