使用IMAP登录Gmail时的java.lang.reflect.InvocationTargetException

时间:2016-12-16 11:39:36

标签: java email session imap gmail-imap

这里我尝试使用IMAP(gmail API)登录Gmail,但是在传递用户名&密码然后我得到调用TargetException。 这是我的代码

`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)
} 

请帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:1)

你从gmail得到一个ALERT,其人类可读的测试表明了一个特定的URL。这不是一个真正的建议或要求,尽管“请”这个词,这是一个要求。

如果您想登录,则必须首先进行网络登录,并且必须使用支持JavaScript的浏览器,并且能够解析验证码。

有办法避免这种情况,通常是。在客户端代码中打开OAUTH2或更改Gmail帐户中的安全设置。两者通常都有效,但你无法保证。 Google使用启发式和各种魔法来猜测您是真实用户还是攻击者,如果评估引擎对某个特定登录信息过于不确定,Google会想要使用双因素身份验证或验证码。

相关问题