拒绝JavaMail IMAP连接 - Telnet工作

时间:2016-01-29 17:50:39

标签: java networking content-management-system javamail imap

我尝试使用JavaMail连接到IMAP服务器(在远程虚拟Linux机器上 - Ubuntu 14 LTS),但我得到以下异常:

java.net.ConnectException: Connection refused

我已经尝试通过Telnet建立连接,一切正常。

我使用的JavaMail版本是1.5.5(也是使用1.4.7测试过),我使用以下属性:

    Properties properties = System.getProperties();
    properties.setProperty("mail.imap.host", SERVER);
    properties.setProperty("mail.store.protocol", "imap");
    properties.put("mail.imap.port", PORT);

    Session session = Session.getInstance(properties, null);
    Store store = session.getStore("imap");
    store.connect(USERNAME, PASSWORD);

注意:

  • 它在我的个人计算机上工作
  • 正在使用另一台外部计算机
  • 它在远程linux虚拟机上失败
  • IMAP服务器位于不同的计算机上 - 以前的所有

我做了一些研究,有些人说这可能是防火墙/阻止问题,但我怎么能通过Telnet连接?

感谢。

被修改

我在测试运行中应用的telnet命令:

telnet <server_ip> <port>

此后,连接成功建立,并且我能够应用IMAP命令,例如列表状态

javamail失败时的输出如下:

java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
    at com.sun.mail.iap.Protocol.<init>(Protocol.java:107)
    at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:104)
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:538)
    ... 12 more

3 个答案:

答案 0 :(得分:0)

防火墙通常基于端口工作。这意味着可以允许telnet(23 / TCP),而IMAP(通常是143/993)被阻止。

您应检查防火墙并检查IMAP端口是否已打开。

答案 1 :(得分:0)

你的程序在哪里运行?如果你change getDefaultInstance to getInstance有效吗?

答案 2 :(得分:0)

我找到了解决方案!!

我在远程计算机上执行了网络捕获,我看到由于某种原因,javamail api使用的是默认的IMAP文件夹而不是我选择的那个..

进一步测试显示,将属性值类型更改为String而不是Integer解决了此问题。重要的是要注意这在其他环境中没有发生,所以我不确定我必须做出这种改变的原因。