2016-12-16 16 views
0

Здесь я пытаюсь войти в систему Gmail с помощью IMAP (gmail API), но при передаче имени пользователя & Пароль, а затем получение Invocation TargetException. Вот мой кодjava.lang.reflect.InvocationTargetException для входа в Gmail с помощью IMAP

`Properties props = System.getProperties(); 
props.setProperty("mail.store.protocol", "imaps"); 
Session session = Session.getDefaultInstance(props, null); 
Store store = session.getStore("imaps"); 
store.connect("imap.gmail.com", "<username>@gmail.com", "<password>"); 
//Here im getting exception and below is the log 
Exception in thread "main" javax.mail.AuthenticationFailedException: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) 
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:474) 
at javax.mail.Service.connect(Service.java:275) 
at javax.mail.Service.connect(Service.java:156) 
} 

Пожалуйста, помогите мне, как решить this.Thank Вы.

+0

Просьба включить полную трассировку стека. – Max

+0

@Max, Im становится ниже исключения: Исключение в потоке «main» javax.mail.AuthenticationFailedException: [ALERT] Пожалуйста, войдите в свой веб-браузер: https://support.google.com/mail/accounts/answer/78754 (Неудача) \t в com.sun.mail.imap.IMAPStore.protocolConnect (IMAPStore.java:474) \t в javax.mail.Service.connect (Service.java:275) \t в javax.mail.Service.connect (Service.java:156) – khanam

+0

Включили ли вы «менее безопасные приложения» в своей учетной записи gmail? Вы отключите ловушку безопасности с помощью gmail. Иногда единственный реальный способ исправить это - использовать OAUTH2. – Max

ответ

1

У вас есть АЛЕРТ из gmail, чей читаемый человеком тест предлагает конкретный URL-адрес. Это не предложение или просьба, несмотря на слово «пожалуйста», это требование.

Если вы хотите войти в систему, вам необходимо сначала выполнить вход в систему, и вы должны использовать браузер, который поддерживает javascript и способен разрешать капчу.

Есть способы избежать этого, обычно. Либо включите OAUTH2 в код клиента, либо измените параметры безопасности в учетной записи gmail. Оба обычно работают, но у вас нет гарантии. Google использует эвристику и различную магию, чтобы угадать, являетесь ли вы реальным пользователем или злоумышленником, и если механизм оценки слишком неопределен в отношении конкретного входа в систему, Google хочет использовать двухфакторную аутентификацию или капчу.