Получить выходные данные сервера при использовании javax.mail - PullRequest
0 голосов
/ 16 сентября 2010

Мне необходимо реализовать доступность и проверку подлинности серверов POP3, IMAP и SMTP-серверов путем подключения к ним, авторизации и сравнения ожидаемого вывода сервера с полученным выводом сервера при выполнении ранее упомянутых операций.

Я использую Java,чтобы не изобретать велосипед, я также использую реализацию javax.mail.Все работает нормально, за исключением того, что нет способа получить записанный вывод с сервера.Единственный доступный источник - выходные данные отладки:

Properties props = new Properties();
props.setProperty("mail.pop3.debug", "true");
Session session = Session.getInstance(props, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
session.setDebug(true);
session.setDebugOut(new PrintStream(out));
Store store = new POP3Store(session, getUrl());
store.connect();
store.close();
out.toString(); // < the only available communication output

Единственный способ получить выходные данные сервера - это проанализировать выходные данные отладки (поиск строк, начинающихся с «S:», и чтение строк до строки, начинающейся с"C:" или конец потока найден).

Пример выходных данных для отладки связи POP3 выглядит следующим образом:

DEBUG POP3: connecting to host "pop.gmail.com", port 995, isSSL true
S: +OK Gpop ready for requests from *** ***
C: CAPA
S: +OK Capability list follows
USER
RESP-CODES
EXPIRE 0
LOGIN-DELAY 300
X-GOOGLE-VERHOEVEN
UIDL
.
C: USER ***
S: +OK send PASS
C: PASS ***
S: +OK Welcome.
C: QUIT
S: +OK Farewell.

Единственная другая альтернатива, которую я вижу здесь, - это использование пользовательского SocketFactory (setСвойство "mail. *. socketFactory"), которое будет производить мой изначально установленный сокет, из которого я смогу получить поток ввода с сервера.

Я считаю, что есть лучшее решение для этого.Вы видите?

Заранее спасибо.

1 Ответ

0 голосов
/ 16 сентября 2010

Я бы просто подключился через розетку и предоставил точный контрольный пример. Я бы не стал использовать javamail для этого конкретного приложения.

...