powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Получение писем по IMAP
15 сообщений из 15, страница 1 из 1
Получение писем по IMAP
    #37468000
Есть аккаунт в 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
Получение писем по IMAP
    #37468025
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вместо такой дурости
System.out.println(ex);
напишите такую
ex.printStackTrace();

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

Скорее всего сертификат не найдет в локальном хранилище.
...
Рейтинг: 0 / 0
Получение писем по IMAP
    #37468034
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
Получение писем по IMAP
    #37468385
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, конечно. Вроде багу с потеряной ошибкой давно зафиксили:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4750519
попробуйте под отладчиком посмотреть код указаный в этой баге. Там должна быть корневая ошибка с более внятным описанием.
...
Рейтинг: 0 / 0
Получение писем по IMAP
    #37470726
Проблема разрешилась, банально был закрыт 993-й порт.
А поскольку использовалась старая версия javax.mail под jdk, идущем в комплекте с 10-м ораклом, то и Network is unreachable не получал.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Получение писем по IMAP
    #39232245
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Решил не дублировать вопрос, т.к. он по сути аналогичный, только я не к гуглосерверу коннекчусь, а к 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
Получение писем по IMAP
    #39232318
morewind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolfio,

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

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



нужно указать 143.
...
Рейтинг: 0 / 0
Получение писем по IMAP
    #39232326
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Получение писем по IMAP
    #39232380
morewind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolfio,

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

как преодолеть шифрование, подскажете? или о чем погуглить подскажите :)
...
Рейтинг: 0 / 0
Получение писем по IMAP
    #39232916
morewind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Получение писем по IMAP
    #39232998
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Получение писем по IMAP
    #39233077
morewind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Получение писем по IMAP
    #39233113
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morewindМне подобное пишет когда логин/пароль не правильный.
+1
Надо убедится что логин именно в такой форме нужен. Иногда бывает без домена. А иногда с доменом, но в виндовой записи, а не email. Сильно от сервера зависит.
...
Рейтинг: 0 / 0
Получение писем по IMAP
    #39233130
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
morewind, Blazkowicz,

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


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