JavaMail通过imaps连接到电子邮件存储 - 延长超时

时间:2017-09-11 06:22:06

标签: java javamail exchange-server imap

我试图延长连接到电子邮件存储(Microsoft Exchange服务器)的超时但没有成功。原因是,在我连接到商店的本地机器上几乎是即时的,但在机器上我将代码部署到它可能需要几分钟。我不是不断地尝试连接,反而只是暂停一段时间。这该怎么做?这是我的代码(尝试将超时设置为2分钟):

        Properties properties = new Properties();
        properties.put("mail.store.protocol", "imaps");
        properties.put("mail.imaps.host", IESProperties.STORE_HOST);
        properties.put("mail.imaps.port", "993");
        properties.put("mail.imaps.connectiontimeout", "120000"); // 2 minutes
        properties.put("mail.imaps.timeout", "120000"); // 2 minutes

        Session session = Session.getInstance(properties);
        IMAPStore store = null;

        try {
            store = (IMAPStore) session.getStore("imaps");
            try {
                store.connect(IESProperties.STORE_USERNAME, IESProperties.STORE_PASSWORD);

当我跑步时,它似乎只在大约10秒钟之后就放弃了。

jvm 1    | javax.mail.MessagingException: Connection timed out: connect;
jvm 1    |   nested exception is:
jvm 1    |      java.net.ConnectException: Connection timed out: connect
jvm 1    |      at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:66
5)
jvm 1    |      at javax.mail.Service.connect(Service.java:295)
jvm 1    |      at javax.mail.Service.connect(Service.java:176)
jvm 1    |      at javax.mail.Service.connect(Service.java:196)
jvm 1    |      at com.axa.ets.ies.Main.start(Main.java:297)
jvm 1    |      at com.axa.ets.ies.Main.main(Main.java:232)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
jvm 1    |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Sourc
e)
jvm 1    |      at java.lang.reflect.Method.invoke(Unknown Source)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimple
App.java:325)
jvm 1    |      at java.lang.Thread.run(Unknown Source)

当我远程登陆商店需要很长时间,但通常会在大约一分钟后连接。

如何使用API​​延长此超时?感谢

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以通过代码控制它。但是,可以通过服务器来控制(请参阅here - > IMAP4的连接超时限制):

此示例设置空闲已验证连接的连接超时限制。

Set-ImapSettings -Identity CAS01 -AuthenticatedConnectionTimeout TimeValue

此示例设置空闲未经身份验证的连接的连接超时限制。

Set-ImapSettings -Identity CAS01 -PreAuthenticatedConnectionTimeout TimeValue