【问题标题】:Gmail Imap - Can't connect when I am in office networkGmail Imap - 当我在办公网络中时无法连接
【发布时间】:2012-01-02 20:51:49
【问题描述】:

我周末一直在家里处理 Gmail-Imap-Api。它工作正常但是当我回到办公室并在这里尝试时,它会抛出异常。

    Properties props = System.getProperties();
    props.put("mail.store.protocol", "imaps");
    props.put("mail.smtp.auth", "true");

    try {
        boolean debug = false;
        Authenticator auth = new SMTPAuthenticator(
                "***", "***");

        Session session = Session.getInstance(props, auth);
        session.setDebug(debug);
        Store store = session.getStore("imaps");
        store.connect("imap.gmail.com", "***@gmail.com",
                "****");
    ......
    ......

这在家庭网络中运行良好。 现在我想我会添加代理并添加这些代码行。

    System.setProperty("http.proxyHost", "****.com");
    System.setProperty("http.proxyPort", "8080");

它仍然不起作用,例外是。

com.google.code.javax.mail.MessagingException: imap.gmail.com;
nested exception is:
java.net.UnknownHostException: imap.gmail.com
at com.google.code.com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:665)
at com.google.code.javax.mail.Service.connect(Service.java:295)
at com.google.code.javax.mail.Service.connect(Service.java:176)
at openReports.OpenReportsProject.main(OpenReportsProject.java:43)
Caused by: java.net.UnknownHostException: imap.gmail.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367)
at java.net.Socket.connect(Socket.java:524)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:545)
at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
at com.google.code.com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
at com.google.code.com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
at com.google.code.com.sun.mail.iap.Protocol.<init>(Protocol.java:113)
at com.google.code.com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:110)
at com.google.code.com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:632)
... 3 more

【问题讨论】:

  • 您必须在防火墙/代理之后,并且 Gmail-Imap 使用的端口(我猜是 993)需要在您的防火墙中打开。
  • 现在该如何处理?我添加了代理设置 ryt?它不会在这里达到目的吗?
  • 你能告诉我怎么做吗?对不起,如果它是一个直截了当的问题。 :)
  • 我将解决方案发布为答案。请看看它是否对你有帮助。
  • 在用 java 编码之前,试着让它与 Outlook Express 等电子邮件客户端一起工作。它会为您省去一些麻烦:)

标签: java gmail-imap


【解决方案1】:

您输入的代理设置仅适用于 HTTP 连接。 IMAP 是在不同端口(本例中为 993)上运行的不同协议。如果您在防火墙后面,您的防火墙需要允许连接到外部主机:端口和协议。 您需要为此向网络管理员提出请求。设置到位后,您将能够使用指定协议在默认/指定端口上与 Gmail Imap 服务器通信。

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 2013-09-11
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多