我正在使用早期线程中的代码(也粘贴了下面的代码):
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);
}
}
谢谢, 克里斯。
答案 0 :(得分:2)
代理后面不会阻止您连接到IMAP
可能有两个原因
由于
答案 1 :(得分:2)
问:如何配置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服务器。