Javamail代理服务器问题

BTzjzxxx 2013-04-24 09:46:56
公司内部连接外网需要使用代理服务器,不支持Socks,是Http代理,需要用户名密码验证。

使用Javamail连接网易邮箱,使用其他网络已经可以连通。

网上找到的设置代理服务器设置的代码如下:


props.setProperty("http.proxySet", "true");
props.setProperty("http.proxyHost", "135.192.xxx.xxx");
props.setProperty("http.proxyPort", "8080");


但是阅读了Javamail源码,没有发现在Service类或者Session类中有相关代理服务器的处理代码

而且在设置如上代码后,试图连接pop3.126.com时截到的TCP数据包信息如下:


可以看出这个包依然发往了220.181.15.128,即直接发向pop3.126.com,而没有发给代理服务器,所以导致六次尝试后Connect time out,求大神指导,应该如何解决?

PS:曾想过使用双网络,以太网卡连接内网,无线网卡连接无线网络,虽然可行,但是需要断开一个连接一个,不知道如何在两个网络的情况下在连接网络时选择网卡或网络,如果这样解决也是可以的,求大神们指导。
...全文
1213 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
仙茅 2015-11-25
  • 打赏
  • 举报
回复
楼主,留名啊,怎么才能找到你?我也遇到同样的问题,求指导啊。我Q 308023951
无悔我心 2015-08-13
  • 打赏
  • 举报
回复
大神,JavaMail怎么通过代理下载邮件啊,能连上邮件服务器就行,跪求一段代码,谢谢啦
wupeng_js 2013-08-14
  • 打赏
  • 举报
回复
楼主,我也遇到这个问题了,能说下是怎么修改javamail源码解决的吗?
BTzjzxxx 2013-05-14
  • 打赏
  • 举报
回复
终于解决了,自己回一个吧。 最终是通过修改Javamail源码解决的,不知道是谁最早流出了使用System.setProperty的办法,根本是没有用的,因为在Javamail的pop3实现中跟没有考虑代理服务器的问题,无论是Http还是Socks都没有实现,而是直接使用Socket连接邮箱的pop3服务器,所以根本不可能成功。 而java的socket只是支持Socks代理,可以用socket = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(addr,port)));的方式设置代理,由于我这里是http代理,并没有验证可行性。 而对于http代理,则只能是建立Socket使连接服务器地址和端口,然后再发送"CONNECT pop.126.com HTTP/1.1\r\n\r\n"来使得Socket连向pop3服务器,如果需要验证,则要再加上Proxy-Authorization: Base字段才可以。 还有很多细节,我会写一篇日志来记录一下,真是搞死人了,终于搞定了。
BTzjzxxx 2013-05-06
  • 打赏
  • 举报
回复
洒泪结贴了。。
BTzjzxxx 2013-05-04
  • 打赏
  • 举报
回复
再求一下高手,没有就洒泪结贴了。。。
caofeng891102 2013-05-02
  • 打赏
  • 举报
回复
等待高手。。。
BTzjzxxx 2013-05-02
  • 打赏
  • 举报
回复
求高手啊,一定有高手的啊
BTzjzxxx 2013-04-28
  • 打赏
  • 举报
回复
再顶一下,求高手
BTzjzxxx 2013-04-25
  • 打赏
  • 举报
回复
顶一下,求高手!
七神之光 2013-04-24
  • 打赏
  • 举报
回复

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧