2014-02-01 4 views
0

Я хочу создать XPage для получения электронной почты с помощью JavaMail. Нет проблем с подключением к серверам с провайдером imap (например, session.getStore («imap»)). Но теперь я хочу подключиться к почтовому серверу через imaps (session.getStore («imaps»)). Все, что я получаю, - это исключение «NoSouchProvider».Как я могу использовать IMAPS в XPages

Если я посмотрю на поставщика, зарегистрированного в сеансе, есть только POP3, SMTP и IMAP; нет IMAPS.

Есть ли способ использовать IMAPS с XPages? Какая у меня альтернатива?

BTW: сервер Domino - 9.0.

ответ

0

Используйте поставщика IMAP и требуйте свойство STARTTLS javamail (это свойство IIRC).

+0

Я, возможно, подумаю. STARTTLS - это команда IMAP для запуска шифрования до этого сеанса IMAP с открытым текстом. Starttls обычно используется в качестве первой команды. – arnt

1

Я использовал modified classes, которые делают IMAP совместимые с GMAIL и использовать этот код:

private GmailSSLStore getStore() throws MessagingException { 
    if (this.store != null) { 
     return this.store; 
    } 
    Properties props = System.getProperties(); 
    props.setProperty("mail.imaps.connectiontimeout", "5000"); 
    props.setProperty("mail.imaps.host", "imap.gmail.com"); 
    props.setProperty("mail.imaps.partialfetch", "false"); 
    props.setProperty("mail.imaps.port", "993"); 
    props.setProperty("mail.imaps.timeout", "5000"); 
    props.setProperty("mail.mime.base64.ignoreerrors", "true"); 
    props.setProperty("mail.store.protocol", "gimaps"); 

    javax.mail.Session session = Session.getDefaultInstance(props, null); 
    this.store = (GmailSSLStore) session.getStore("gimaps"); 
    this.store.connect(this.userName, this.passWord); 
    // Ready for connection ;-) 
    return this.store; 
} 

Вы можете изменить этот код, чтобы настроить его под свои нужды. Надеюсь, что поможет

+0

Я попробую ваше решение дальше. Но на данный момент у меня есть две проблемы: проблема одна: если я вызываю System.getProperties() в моем XPage, я получаю исключение безопасности, что мне не разрешают обращаться к соответствующим функциям. Я знаю, что могу редактировать java.policy, но это не вариант для моего клиента. Так есть другое решение? Вторая проблема: ваше предложение расширяет JavaMail 1.4.4, но сервер domino использует JavaMail 1.3. Могу ли я просто использовать это расширение? –

+0

Самый простой способ - это пакет вашего Java-кода в плагин OSGi. Сортирует проблему безопасности, и вы можете добавлять моды. – stwissel

+0

Возможно, создание плагина OSGi может быть решением. Но тогда, как я могу назвать классы java в этом плагине из моего XPage? Вызов любых классов внутри плагина вызывает «Class not found» -Exception в моем XPage. –

Смежные вопросы