通过代理检索邮件时出错

时间:2011-01-06 12:24:36

标签: java

我们正在从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)

2 个答案:

答案 0 :(得分:0)

您的代理可能使用NTLM身份验证,我以前遇到过Java和NTLM身份验证问题。不确定它是否真的是代理给你提出问题。

在任何情况下,您可能希望直接使用GMail API for Java g4j,而不是直接使用JavaMail API。它将抽象出大多数处理gmail的复杂性。

快乐的编码!

答案 1 :(得分:0)

  

JavaMail会not currently support访问邮件服务器   通过Web代理服务器。

     

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