Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение писем по IMAP / 15 сообщений из 15, страница 1 из 1
04.10.2011, 20:53
    #37468000
Получение писем по IMAP
Есть аккаунт в gmail, в котором включена опция поддержки протокола IMAP. Хочется вычитать новые сообщения из ящика итд.
Тестовый примерчик
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	 public   static   void  main(String[] args){
		 try {
		Properties props =  new  Properties();
		props.put("user", "<my_test_account>@gmail.com");
		props.put("password", "<my_simple_password>");
		props.put("mail.store.protocol", "imap");
		props.put("mail.imap.host", "imap.gmail.com");
		props.put("mail.imap.port", "993");
		props.put("mail.imap.ssl.protocols", "SSL");
		props.put("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		props.put("mail.imap.socketFactory.port", "993");
		props.put("mail.imap.socketFactory.fallback", "false");
		Session session = Session.getDefaultInstance(props);
		Store store = session.getStore();
		System.out.println("connecting...");
		store.connect(props.getProperty("mail.imap.host").toString(),props.getProperty("user").toString(), props.getProperty("password").toString());
		System.err.println("done");
		//......
                } catch  (Throwable ex){
			System.out.println(ex);
		}
	}
выбрасывает на store.connect() следующее исключение:
Код: plaintext
1.
2.
javax.mail.MessagingException: Couldn't connect using "javax.net.ssl.SSLSocketFactory" socket factory to host, port: imap.gmail.com, 993; Exception: java.lang.reflect.InvocationTargetException;
  nested exception is: 
	java.io.IOException: Couldn't connect using "javax.net.ssl.SSLSocketFactory" socket factory to host, port: imap.gmail.com,  993 ; Exception: java.lang.reflect.InvocationTargetException
Что я делаю не так? По pop3 подобной проблемы нет.
...
Рейтинг: 0 / 0
04.10.2011, 21:22
    #37468025
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
вместо такой дурости
System.out.println(ex);
напишите такую
ex.printStackTrace();

Результат сюда.

Скорее всего сертификат не найдет в локальном хранилище.
...
Рейтинг: 0 / 0
04.10.2011, 21:30
    #37468034
Получение писем по IMAP
javax.mail.MessagingException: Couldn't connect using "javax.net.ssl.SSLSocketFactory" socket factory to host, port: imap.gmail.com, 993; Exception: java.lang.reflect.InvocationTargetException;
nested exception is:
java.io.IOException: Couldn't connect using "javax.net.ssl.SSLSocketFactory" socket factory to host, port: imap.gmail.com, 993; Exception: java.lang.reflect.InvocationTargetException
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:298)
at javax.mail.Service.connect(Service.java:234)
at javax.mail.Service.connect(Service.java:135)
...
Рейтинг: 0 / 0
05.10.2011, 08:54
    #37468385
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
Странно, конечно. Вроде багу с потеряной ошибкой давно зафиксили:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4750519
попробуйте под отладчиком посмотреть код указаный в этой баге. Там должна быть корневая ошибка с более внятным описанием.
...
Рейтинг: 0 / 0
06.10.2011, 12:49
    #37470726
Получение писем по IMAP
Проблема разрешилась, банально был закрыт 993-й порт.
А поскольку использовалась старая версия javax.mail под jdk, идущем в комплекте с 10-м ораклом, то и Network is unreachable не получал.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.05.2016, 11:59
    #39232245
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
Здравствуйте.
Решил не дублировать вопрос, т.к. он по сути аналогичный, только я не к гуглосерверу коннекчусь, а к MS Exchange 2010.

Я в этом вопросе полный делитант, погуглил всякие примеры, но не смог понять в чем мой трабл. Может кто подскажет?
Собственно, ошибка при подключении (store.connect):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class MailReader {

    public static void main(String[] args){
        try{
            Properties props = new Properties();
            props.put("user", "login@<мойдомен>.ru");
            props.put("password", "Kreditor13");
            props.put("mail.store.protocol", "imap");
            props.put("mail.imap.host", "msk-mail.<мойдомен>.ru");
            props.put("mail.imap.port", "25");

            Session session = Session.getDefaultInstance(props);
            Store store = session.getStore();
            System.out.println("connecting...");
            store.connect(props.getProperty("mail.imap.host").toString(),props.getProperty("user").toString(), props.getProperty("password").toString());
            System.out.println("done");
            //......
        }catch (Throwable ex){
//            System.out.println(ex);
            ex.printStackTrace();
        }
    }



стак ошибок:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
connecting...
javax.mail.MessagingException: 220 <DNSсервера>.<мойдомен>.ru Microsoft ESMTP MAIL Service ready at Tue, 10 May 2016 11:25:22 +0300;
  nested exception is:
	com.sun.mail.iap.ConnectionException: 220 <DNSсервера>.<мойдомен>.ru Microsoft ESMTP MAIL Service ready at Tue, 10 May 2016 11:25:22 +0300
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:723)
	at javax.mail.Service.connect(Service.java:366)
	at javax.mail.Service.connect(Service.java:246)
	at MailReader.main(MailReader.java:34)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: com.sun.mail.iap.ConnectionException: 220 <DNSсервера>.<мойдомен>.ru Microsoft ESMTP MAIL Service ready at Tue, 10 May 2016 11:25:22 +0300
	at com.sun.mail.imap.protocol.IMAPProtocol.processGreeting(IMAPProtocol.java:321)
	at com.sun.mail.iap.Protocol.<init>(Protocol.java:130)
	at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:126)
	at com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:748)
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:684)
	... 8 more

в чем ошибка, пожалуйста, подскажите?
...
Рейтинг: 0 / 0
10.05.2016, 12:50
    #39232318
morewind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
wolfio,

imap работает на 143 порту, на 25 порту работает smtp.

Код: java
1.
props.put("mail.imap.port", "25");



нужно указать 143.
...
Рейтинг: 0 / 0
10.05.2016, 12:55
    #39232326
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
morewind,
блин, вот ровно только что прочитал об этом :)
попробовал 143, выдает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
javax.mail.MessagingException: No login methods supported!;
  nested exception is:
	com.sun.mail.iap.ProtocolException: No login methods supported!
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:723)
	at javax.mail.Service.connect(Service.java:366)
	at javax.mail.Service.connect(Service.java:246)
	at MailReader.main(MailReader.java:34)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: com.sun.mail.iap.ProtocolException: No login methods supported!
	at com.sun.mail.imap.IMAPStore.authenticate(IMAPStore.java:913)
	at com.sun.mail.imap.IMAPStore.login(IMAPStore.java:809)
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:691)
	... 8 more

993 порт тож не пашет. сервер отрубает попытку коннекта по таймауту
...
Рейтинг: 0 / 0
10.05.2016, 13:32
    #39232380
morewind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
wolfio,

Скорее всего сервер требует шифрованного соединения и отказывает в не шифрованном.
...
Рейтинг: 0 / 0
10.05.2016, 15:53
    #39232542
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
morewind,

как преодолеть шифрование, подскажете? или о чем погуглить подскажите :)
...
Рейтинг: 0 / 0
11.05.2016, 00:41
    #39232916
morewind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
wolfiomorewind,

как преодолеть шифрование, подскажете? или о чем погуглить подскажите :)

Как-то так, что бы не мучатся с сертификатами.

Код: java
1.
2.
3.
4.
            props.put("mail.imap.starttls.enable", "true");
            props.put("mail.imap.starttls.required", "true");
            props.put("mail.imap.ssl.checkserveridentity", "false");
            props.put("mail.imap.ssl.trust", "*");



Еще можно добавить:
Код: java
1.
session.setDebug(true);



в консоли будет видно протокол общения с сервером.
...
Рейтинг: 0 / 0
11.05.2016, 08:49
    #39232998
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
morewind,
сделал по вашей рекомендации.
теперь пишет просто AUTHENTICATE failed.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 отладка session.setDebug(true);  
DEBUG: setDebug: JavaMail version 1.5.5
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: enable STARTTLS
DEBUG IMAP: require STARTTLS
DEBUG IMAP: closeFoldersOnStoreFailure
connecting...
DEBUG IMAP: trying to connect to host "********", port 143, isSSL false
* OK The Microsoft Exchange IMAP4 service is ready.
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY completed.
DEBUG IMAP: protocolConnect login, host=********, user=********, password=********
A1 STARTTLS
A1 OK Begin TLS negotiation now.
A2 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
A2 OK CAPABILITY completed.
DEBUG IMAP: AUTH: NTLM
DEBUG IMAP: AUTH: GSSAPI
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: AUTHENTICATE PLAIN command trace suppressed
DEBUG IMAP: AUTHENTICATE PLAIN command result: A3 NO AUTHENTICATE failed.

 java error 
javax.mail.AuthenticationFailedException: AUTHENTICATE failed.
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:717)
	at javax.mail.Service.connect(Service.java:366)
	at javax.mail.Service.connect(Service.java:246)
	at MailReader.main(MailReader.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Process finished with exit code 0
...
Рейтинг: 0 / 0
11.05.2016, 10:18
    #39233077
morewind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
wolfio,

Мне подобное пишет когда логин/пароль не правильный.

Забыл еще вчера написать, вместо:

Код: java
1.
store.connect(props.getProperty("mail.imap.host").toString(),props.getProperty("user").toString(), props.getProperty("password").toString());



можно писать:

Код: java
1.
store.connect(props.getProperty("mail.imap.host"), props.getProperty("user"), props.getProperty("password"));
...
Рейтинг: 0 / 0
11.05.2016, 10:58
    #39233113
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
morewindМне подобное пишет когда логин/пароль не правильный.
+1
Надо убедится что логин именно в такой форме нужен. Иногда бывает без домена. А иногда с доменом, но в виндовой записи, а не email. Сильно от сервера зависит.
...
Рейтинг: 0 / 0
11.05.2016, 11:15
    #39233130
wolfio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение писем по IMAP
morewind, Blazkowicz,

Понял свою ошибку, спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение писем по IMAP / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]