用JavaMail做了个接收邮件的类,可以成功接收pop3邮件,但是在单位的时候需要通过代理服务器才能上网,这样就收不到了。
请大虾不吝赐教。
HTTP代理或者SOCKS代理都可以,只要能让我在内网收到互联网上的邮件即可。
我用java1.4,如果java5可以解决也好。

解决方案 »

  1.   

    jdk1.5
    System.getProperties().put("proxySet","true");
    System.getProperties().setProperty( "http.proxyHost","代理地址");
    System.getProperties().setProperty( "http.proxyPort","代理端口");
    网上参考:
    大多数代理服务器只支持 HTTP 协议。JavaMail 没有使用 HTTP 协议来阅读或发送邮件。使用代理服务器的一个主要原因是为了允许企业网络中的 HTTP 请求通过企业防火墙。防火墙通常会阻止对 Internet 的大多数访问,但允许来自代理服务器的请求通过。此外,企业网络内部的邮件服务器将为邮件执行类似的功能,通过 SMTP 接收消息,然后将它们转发到 Internet 上的最终目的地,以及接收传入的消息,然后将它们发送到合适的内部邮件服务器。
      如果你的代理服务器支持 SOCKS V4 或 V5 协议 (http://www.socks.nec.com/aboutsocks.html, RFC1928),并允许匿名连接,可以告诉 Java 运行时把所有的 TCP socket 直接连接到 SOCKS 服务器。参阅 http://java.sun.com/j2se/1.4/docs/guide/net/properties.html,获取 socksProxyHost 和 socksProxyPort 属性的最新文档。这些是系统级属性,而不是 JavaMail 会话属性。当调用应用程序时,它们可以从命令行中设置,例如:java -DsocksProxyHost=myproxy ...。这个工具可用于指出从 JavaMail 到 SOCKS 代理服务器进行 SMTP、IMAP 和 POP3 通信。注意,设置这些属性将告诉 所有 TCP socket 连接到 SOCKS 代理,在应用程序的其他方面上,这可能会带来负面影响。
      假如没有这样的 SOCKS 服务器,如果想使用 JavaMail 来直接访问防火墙外部的邮件服务器,那将需要配置防火墙来允许这一访问。一个简单的 HTTP 代理 Web 服务器是足够的。 
      

  2.   

    jdk 1.5 
    作了测试,并没有成功。
      

  3.   

    我记得使用代理发送邮件,javamail本身不需要做设置,而是在设置邮箱帐号时候和普通的不一样,帐号[email protected] 代理是192.168.0.1 那么发送的smtp地址是192.168.0.1 而账号是[email protected]#192.168.0.1 还是别的什么记不清了,不过如果不用代理发送可以的话,那么修改为使用代理发送主程序不需要做任何改动的
      

  4.   

    非常感谢cuij7718的答复,但是我试来试去还是没有成功。
    当用 [email protected]#192.168.0.1 这种格式的时候,服务器直接告诉我验证错误。