使用Javamail(代理后面)通过​​imap访问gmail

时间:2011-06-23 08:14:38

标签: java proxy gmail imap javamail

我正在使用早期线程中的代码(也粘贴了下面的代码):

Getting mail from GMail into Java application using IMAP

如果我在代理服务器后面,如何使此代码生效?

连接正在超时,我试图寻找解决方案,但无济于事。

public static void main(String args[]) {

    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");
        try {
            Session session = Session.getDefaultInstance(props, null);
            Store store = session.getStore("imaps");
            store.connect("imap.gmail.com", email, password);
            System.out.println(store);

            Folder inbox = store.getFolder("Inbox");
            inbox.open(Folder.READ_ONLY);
            Message messages[] = inbox.getMessages();
            for(Message message:messages) {
            System.out.println(message);
        }
    } catch (NoSuchProviderException e) {
        e.printStackTrace();
        System.exit(1);
    } catch (MessagingException e) {
        e.printStackTrace();
        System.exit(2);
    }

}

谢谢, 克里斯。

2 个答案:

答案 0 :(得分:2)

代理后面不会阻止您连接到IMAP

可能有两个原因

  1. 您的网络管理员阻止IMAP端口
  2. 您的IP被Google阻止/禁止
  3. 由于

答案 1 :(得分:2)

Check out the Java Mail FAQ

  

问:如何配置JavaMail才能运行   通过我的代理服务器?

     

A: JavaMail   目前不支持访问   邮件服务器通过Web代理   服务器。其中一个主要原因   使用代理服务器是允许HTTP   公司内部的要求   网络通过企业   防火墙。防火墙通常会   阻止大多数访问互联网,但是   将允许来自代理的请求   服务器通过。另外,一个   公司内部的邮件服务器   网络将执行类似的   电子邮件功能,接受邮件   通过SMTP并将其转发给他们   互联网上的终极目的地,   并接受收到的消息和   将它们发送到适当的   内部邮件服务器。

     

如果您的代理服务器支持   SOCKS V4或V5协议   (http://www.socks.nec.com/aboutsocks.html,   RFC1928)并允许匿名   连接,你可以告诉Java   运行时指向所有TCP套接字   连接到SOCKS服务器。看到   网络属性指南   最新的文件   socksProxyHost和socksProxyPort   属性。这些是系统级的   属性,而不是JavaMail会话   属性。它们可以从中设置   应用程序时的命令行   调用,例如:java   -DsocksProxyHost = myproxy ....此工具可用于指导   SMTP,IMAP和POP3通信   从JavaMail到SOCKS代理   服务器。请注意设置这些   属性将所有TCP套接字定向到   SOCKS代理,可能有   对其他方面的负面影响   你的申请。

     

如果你没有这样的SOCKS服务器   想直接使用JavaMail   访问外部的邮件服务器   防火墙,防火墙需要   配置为允许此类访问。   JavaMail不支持访问   通过HTTP代理Web服务器。