使用代理后的IMAP协议,使用PAC的防火墙读取Gmail邮件

时间:2013-12-17 10:43:21

标签: proxy javamail gmail-imap pac

我有PAC文件和代理端口,但无法登录和阅读邮件。任何人都可以告诉我如何在JAVAMAIL API中使用PAC和代理端口。我已经完成了像

这样的设置
    propsIMAP = new Properties();
    propsSMTP = new Properties();

    propsIMAP.setProperty("http.proxyHost", "http-proxy01.domain.com");   
    propsIMAP.setProperty("http.proxyPort", "88");
    propsIMAP.put("mail.imap.starttls.enable","true");
    propsIMAP.put("mail.imap.host", ImapServerName);
    propsIMAP.put("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    propsIMAP.put("mail.imap.socketFactory.fallback", "false");
    propsIMAP.put("mail.transport.protocol", "imaps");
    propsIMAP.put("mail.imap.auth", "true");
    propsIMAP.put("mail.imaps.port", "993");

并收到错误:

      DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
  DEBUG IMAP: mail.imap.statuscachetimeout: 1000
  DEBUG IMAP: mail.imap.appendbuffersize: -1
  DEBUG IMAP: mail.imap.minidletime: 10
   DEBUG IMAP: enable STARTTLS
    DEBUG IMAP: trying to connect to host "webmail.gmail.com", port 993, isSSL false
  javax.mail.MessagingException: webmail.gmail.com;
   nested exception is:
   java.net.UnknownHostException: webmail.gmail.com
      at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:670)

2 个答案:

答案 0 :(得分:1)

这里的问题是您正在尝试连接到一个根本不存在的主机。 gmail的正确设置是: -

props.setProperty("mail.imap.host", "imap.gmail.com");
props.setProperty("mail.imap.port", "993"); 

您可以使用以下内容: -

  Properties props = System.getProperties();
  props.setProperty("mail.store.protocol", "imaps");
  // Put all other Properties here
  Session session = Session.getDefaultInstance(props, null);
  Store store = session.getStore("imaps");
  store.connect("imap.gmail.com", "<username>@gmail.com", "<password>");

答案 1 :(得分:0)

看起来你只是在那些属性设置中制作东西。请参阅这些JavaMail FAQ条目:

总而言之,您需要的不仅仅是Web代理服务器,PAC文件永远不会起作用。