首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Mail:如何在没有全局系统属性的情况下使用SOCKS进行IMAP处理?

Java Mail:如何在没有全局系统属性的情况下使用SOCKS进行IMAP处理?
EN

Stack Overflow用户
提问于 2011-11-08 16:10:00
回答 1查看 1.6K关注 0票数 1

我有这个问题中描述的问题JavaMail: How to use different SOCKS5 for different threads?

..but这个问题没有真正的答案:-(

此外,我想从imap(s)文件夹中检索邮件,但我不知道如何告诉javaMail使用socks代理,而不是通过全局系统属性进行设置。(sockProxyHost等...)如果我这样做了,并行数据库请求也希望使用socks代理,但它们不应该使用(db不能通过socks代理访问)

在此之前,非常感谢您的提示。汉斯

EN

回答 1

Stack Overflow用户

发布于 2011-12-13 16:42:50

我和一个同事一起解决的

要使用socks代理,您必须执行以下操作。

在mail.jar中,您可以找到SocketFetcher类。在这个类中,会检查是否通过系统属性设置了会话工厂对象或类名。我从SSLSocketFactory实现了自己的SocketFactory复制,我必须在javaMail中操作SocketFetcher,并且我替换了类文件,以便从我自己的SocketFactory调用createSocket(主机、端口)方法。在那里我使用了一个代理

代码语言:javascript
复制
String proxyHost = System.getProperty(SYSTEM_PROP_SOCKS_PROXY_HOST);
int proxyPort = Integer.parseInt(System.getProperty(SYSTEM_PROP_SOCKS_PROXY_PORT));

SocketAddress addr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
socket = new Socket(proxy);

此外,我还必须操作SocketFetcher.createSocket() ...

代码语言:javascript
复制
socket.connect(new InetSocketAddress(host, port));

...you必须检查套接字是否已连接,否则将抛出异常,并使用不属于您的默认socketFactory

祝你好运:-)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8047541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档