Java 通过代理检索邮件时出错

Java 通过代理检索邮件时出错,java,Java,我们正在从gmail服务器检索邮件。我们可以在不使用代理的情况下连接到gmail服务器。由于我们学院有一个代理设置,即使设置了系统属性,我们也无法连接到Gmail服务器。我们可以从浏览器连接到gmail.com,但无法从程序连接 Properties props = System.getProperties(); props.setProperty("http.proxyHost", "proxyhost"); props.setProperty("http.proxyPort", "p

我们正在从gmail服务器检索邮件。我们可以在不使用代理的情况下连接到gmail服务器。由于我们学院有一个代理设置,即使设置了系统属性,我们也无法连接到Gmail服务器。我们可以从浏览器连接到gmail.com,但无法从程序连接

Properties props = System.getProperties();  
props.setProperty("http.proxyHost", "proxyhost");  
props.setProperty("http.proxyPort", "proxynumber");  
props.setProperty( "mail.imap.socketFactory.class", SSL_FACTORY);  
props.setProperty( "mail.imap.socketFactory.fallback", "false");  
props.setProperty( "mail.imap.port", "993");  
props.setProperty( "mail.imap.socketFactory.port", "993");  
props.put("mail.imap.host", "imap.gmail.com");  
Session session = Session.getDefaultInstance(props, null);  

store = session.getStore("imap");  
store.connect(dialog.getServer(),dialog.getUsername(),dialog.getPassword());  
我们得到了这个例外

java.net.UnknownHostException: imap.gmail.com 
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:618) 
at javax.mail.Service.connect(Service.java:291) 
at javax.mail.Service.connect(Service.java:172) 
at EmailClient.connect(EmailClient.java:373) 
at EmailClient.main(EmailClient.java:475) 
by: java.net.UnknownHostException: imap.gmail.com 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source) 
at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source 

at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284) 
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:201) 
at com.sun.mail.iap.Protocol.<init>(Protocol.java:109) 
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:104) 

at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:585)
java.net.UnknownHostException:imap.gmail.com
在com.sun.mail.imap.IMAPStore.protocolConnect上(IMAPStore.java:618)
位于javax.mail.Service.connect(Service.java:291)
在javax.mail.Service.connect(Service.java:172)
在EmailClient.connect(EmailClient.java:373)
main(EmailClient.java:475)
作者:java.net.UnknownHostException:imap.gmail.com
位于java.net.PlainSocketImpl.connect(未知源)
位于java.net.socksocketimpl.connect(未知源)
位于java.net.Socket.connect(未知源)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(未知源)
位于com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(未知源
在com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
位于com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:201)
位于com.sun.mail.iap.Protocol.(Protocol.java:109)
在com.sun.mail.imap.protocol.IMAPProtocol.(IMAPProtocol.java:104)
在com.sun.mail.imap.IMAPStore.protocolConnect上(IMAPStore.java:585)

很可能您的代理使用NTLM身份验证,我过去在Java和NTLM身份验证方面遇到过问题。但不确定它是否真的是给您带来问题的代理

在任何情况下,与其直接使用JavaMail API,不如看看g4j的使用。它将从总体上消除处理gmail的大部分复杂性

快乐编码

JavaMail不支持访问邮件服务器 通过web代理服务器

如果代理服务器支持SOCKS V4或V5协议并允许 匿名连接,并且您正在使用JDK1.5或更新版本和JavaMail 1.4.5或更新版本,您可以配置SOCKS代理


您能在服务器上执行“nslookup imap.gmail.com”吗?服务器运行的是什么O/S?您是同时代理smtp还是仅代理http?