访问使用JavaMail通过IMAP访问Gmail(使用代理)
我使用代码从较早的线程(已粘贴下面的代码为好):访问使用JavaMail通过IMAP访问Gmail(使用代理)
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);
}
}
谢谢, Chris。
后面的代理不阻止你连接到IMAP
可能有两个原因
- 的IMAP端口块由网络管理员
- 你的IP被封锁/禁止通过谷歌
感谢
问:我如何配置JavaMail通过我的代理服务器工作 ?
答:的JavaMail 目前不支持通过Web代理服务器 访问 邮件服务器。 使用代理服务器的主要原因之一是允许来自公司 网络的HTTP 请求通过企业 防火墙。防火墙通常会阻止对互联网的大部分访问,但 将允许来自代理 服务器的请求通过。此外,企业 网络内 邮件服务器将执行类似的 功能为电子邮件,通过SMTP接受邮件 ,并将它们转发到他们的 最终目的地在互联网上, 并接受传入的消息和 将它们发送到合适的 内部邮件服务器。
如果您的代理服务器支持SOCKS V4或V5协议 (http://www.socks.nec.com/aboutsocks.html, RFC1928),并允许匿名连接 ,你可以告诉了Java运行时 指示所有TCP套接字 连接到SOCKS服务器。请参阅 网络属性指南 socksProxyHost和socksProxyPort 属性的最新文档。这些属性是系统级 属性,而不是JavaMail会话 属性。当调用应用程序 时,可以从 命令行设置它们,例如:java -DsocksProxyHost = myproxy ....此工具可用于将来自JavaMail的SMTP,IMAP和POP3通信 指向服务器的SOCKS代理 。请注意,设置这些 属性会将所有TCP套接字指向SOCKS代理的 ,这可能会对您的应用程序的其他方面造成负面影响 。
没有这样的SOCKS服务器,如果你 想使用JavaMail来直接 防火墙外部 访问邮件服务器,防火墙将需要 配置为允许这种访问。 JavaMail不支持通过HTTP代理Web服务器访问 。
尝试pinging imap.gmail.com – mtariq
我试过ping imap.google.com:“Ping请求找不到主机imap.google.com,请检查名称并重试。” 。我如何知道我的IP是否被禁止?谢谢,克里斯。 – ChrisOdney
确认网络问题。请联系您的ISP或网络管理员。 – mtariq