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

发布于 2024-11-16 22:20:30 字数 1110 浏览 2 评论 0原文

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

使用 IMAP 将邮件从 GMail 获取到 Java 应用程序

如果我位于代理后面,如何使此代码工作?

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

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);
    }

}

谢谢, 克里斯.

I am using code from on the earlier threads(have pasted the code below as well):

Getting mail from GMail into Java application using IMAP

How do I make this code work if I am behind a proxy?

The connection is getting timed out, I have tried to search for a solution but to no avail.

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);
    }

}

Thanks,
Chris.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伏妖词 2024-11-23 22:20:30

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

可能有 2 个原因

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

谢谢

Behind the proxy doesn't stop you to connect to IMAP

There could be 2 reasons

  1. The IMAP port is block by your network administrator
  2. your IP is blocked/banned by Google

Thanks

吻泪 2024-11-23 22:20:30

查看 Java Mail 常见问题解答

问:如何配置 JavaMail 使其工作
通过我的代理服务器?

A:JavaMail
目前不支持访问
通过网络代理的邮件服务器
服务器。主要原因之一是
使用代理服务器是为了允许HTTP
来自企业内部的请求
网络通过企业
防火墙。防火墙通常会
阻止大部分互联网访问,但是
将允许来自代理的请求
服务器要经过。此外,还有一个
企业内部的邮件服务器
网络将执行类似的操作
电子邮件功能,接受消息
通过 SMTP 并将它们转发到他们的
互联网上的最终目的地,
并接受传入的消息和
将他们发送到适当的
内部邮件服务器。

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

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

Check out the Java Mail FAQ:

Q: How do I configure JavaMail to work
through my proxy server?

A: JavaMail
does not currently support accessing
mail servers through a web proxy
server. One of the major reasons for
using a proxy server is to allow HTTP
requests from within a corporate
network to pass through a corporate
firewall. The firewall will typically
block most access to the Internet, but
will allow requests from the proxy
server to pass through. In addition, a
mail server inside the corporate
network will perform a similar
function for email, accepting messages
via SMTP and forwarding them to their
ultimate destination on the Internet,
and accepting incoming messages and
sending them to the appropriate
internal mail server.

If your proxy server supports the
SOCKS V4 or V5 protocol
(http://www.socks.nec.com/aboutsocks.html,
RFC1928) and allows anonymous
connections, you can tell the Java
runtime to direct all TCP socket
connections to the SOCKS server. See
the Networking Properties guide for
the latest documentation of the
socksProxyHost and socksProxyPort
properties. These are system-level
properties, not JavaMail session
properties. They can be set from the
command line when the application is
invoked, for example: java
-DsocksProxyHost=myproxy .... This facility can be used to direct the
SMTP, IMAP, and POP3 communication
from JavaMail to the SOCKS proxy
server. Note that setting these
properties directs all TCP sockets to
the SOCKS proxy, which may have
negative impact on other aspects of
your application.

Without such a SOCKS server, if you
want to use JavaMail to directly
access mail servers outside the
firewall, the firewall will need to be
configured to allow such access.
JavaMail does not support access
through a HTTP proxy web server.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文